web-dev-qa-db-fra.com

Comment tester si un message est un type de message personnalisé?

Je recherche un moyen de vérifier si un message est un type de message personnalisé. Par exemple, dans la barre latérale, par exemple, je peux mettre un code comme celui-ci:

 if ( is_single() ) {
     // Code here
 }

Je veux tester le code uniquement pour un type de message personnalisé.

99
Adam Thompson

Vous êtes ici: get_post_type() puis if ( 'book' == get_post_type() ) ... selon Balises conditionnelles> Type de message dans Codex.

128
Szymon Skulimowski
if ( is_singular( 'book' ) ) {
    // conditional content/code
}

Ce qui précède est true lors de l'affichage d'un message de type personnalisé: book.

if ( is_singular( array( 'newspaper', 'book' ) ) ) {
    //  conditional content/code
}

Ce qui précède est true lors de l'affichage d'un message de type personnalisé: newspaper ou book.

Ces balises et plus conditionnelles peuvent être consultées ici .

159
Mark Rummel

Ajoutez ceci à votre functions.php, et vous pouvez avoir la fonctionnalité, à l'intérieur ou à l'extérieur de la boucle:

function is_post_type($type){
    global $wp_query;
    if($type == get_post_type($wp_query->post->ID)) 
        return true;
    return false;
}

Donc, vous pouvez maintenant utiliser ce qui suit:

if (is_single() && is_post_type('post_type')){
    // Work magic
}
27
Mild Fuzz

Pour vérifier si une publication est any / type de publication personnalisé, extrayez la liste de tous les types de publication non intégrés et testez si le type de publication est dans cette liste.

En tant que fonction:

/**
 * Check if a post is a custom post type.
 * @param  mixed $post Post object or ID
 * @return boolean
 */
function is_custom_post_type( $post = NULL )
{
    $all_custom_post_types = get_post_types( array ( '_builtin' => FALSE ) );

    // there are no custom post types
    if ( empty ( $all_custom_post_types ) )
        return FALSE;

    $custom_types      = array_keys( $all_custom_post_types );
    $current_post_type = get_post_type( $post );

    // could not detect current type
    if ( ! $current_post_type )
        return FALSE;

    return in_array( $current_post_type, $custom_types );
}

Usage:

if ( is_custom_post_type() )
    print 'This is a custom post type!';
23
fuxia

Si pour une raison quelconque vous avez déjà accès à la variable globale $ post, vous pouvez simplement utiliser

if ($post->post_type == "your desired post type") {
}
10
ino

Si vous souhaitez une vérification avec caractère générique pour tous vos types de publication personnalisés:

if( ! is_singular( array('page', 'attachment', 'post') ) ){
    // echo 'Imma custom post type!';
}

De cette façon, vous n'avez pas besoin de connaître le nom de votre message personnalisé. De plus, le code fonctionne toujours même si vous modifiez le nom de votre publication personnalisée ultérieurement.

5
kosinix