Domanda

Qualcuno sa di un modo per aggiungere codice al file functions.php che costringerà automaticamente tutti i messaggi che appartengono a un tipo di messaggio personalizzato di essere "private" e / o "protetto da password" con un set di password di default?

Mi riferisco in particolare alla creazione di un nuovo post o la modifica di un post esistente garantendo così un post appartenente ad un tipo specifico messaggio personalizzato non cambia mai ...

È stato utile?

Soluzione

È possibile agganciare save_post, wp_insert_post o wp_insert_post_data modificare l'oggetto posto prima di essere inserito o salvato.

Utilizzando save_post o wp_insert_post la richiamata avrebbe bisogno di dichiarare due args e avrebbero ricevuto l'oggetto posto come seconda variabile in entrata .. (e vi sto mostrando per coprire le alternative, l'esempio di TheDeadMedic andrebbe bene a).

Per impostare valori di default per un particolare tipo di messaggio per nuovi i messaggi è possibile utilizzare un piccolo trucco agganciando sul default_content (anche se default_title sarebbe anche il lavoro a), come l'esempio che ho dato here .

È essenzialmente bisogno di due funzioni, una per modificare gli oggetti post al momento di SAVE / inserto e uno per i valori impostati di oggetti postali di default, ecco un esempio delle due funzioni necessarie (ancora una volta notare è possibile scambiare la mia richiamata save_post per l'esempio già data dalla TheDeadMedic).

add_action( 'save_post', 'check_type_values', 10, 2 );

function check_type_values( $post_id, $post ) {

    if( $post->post_type )
        switch( $post->post_type ) {
            case 'my_custom_type':
                $post->post_status = 'private';
                $post->post_password = ( '' == $post->post_password ) ? 'some_default_when_no_password' : $post->post_password;
            break;
        }   
    return;
}

add_filter( 'default_content', 'set_default_values', 10, 2 );

function set_default_values( $post_content, $post ) {

    if( $post->post_type )
        switch( $post->post_type ) {
            case 'my_custom_type':
                $post->post_status = 'private';
                $post->post_password = 'some_default_password';
            break;
        }
    return $post_content;
}

La speranza che aiuta ...

Altri suggerimenti

function force_type_private($post)
{
    if ($post['post_type'] != 'my_post_type' || $post['post_status'] == 'trash')
        return $post;

    $post['post_password'] = 'my password';
    $post['post_status'] = 'private';
    return $post;
}
add_filter('wp_insert_post_data', 'force_type_private');

Non potremmo fare una pagina modello per il tipo di messaggio personalizzato e fare un controllo se l'è l'utente è connesso e verificare se l'utente è un certo ruolo? Consente di prendere ad esempio si desidera avere un post-tipo che è solo per essere visto dagli amministratori:

<?php if ( is_user_logged_in() && is_admin() ) : if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
  <?php the_content(); ?>
<?php endwhile; endif; endif; ?>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a wordpress.stackexchange
scroll top