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


104

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é.

Réponses:



166
if ( is_singular( 'book' ) ) {
    // conditional content/code
}

Ce qui précède est truelors de l' affichage d' un poste du type de poste personnalisé: book.

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

Ce qui précède trues’applique lors de la visualisation d’une publication de type personnalisé: newspaperou book.

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


27

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
}

Merci, c'est très utile! Mais cela devrait être: if (is_single () && is_post_type ('post_type')) {// magie du travail} Le crochet de fermeture manquait ...

Cela a-t-il cessé de fonctionner pour quelqu'un d'autre? Je l'utilise depuis des lustres, mais tout à coup, cela a cessé de fonctionner pour moi. Cependant, utiliser la même méthode sans $ wp_query global fonctionne toujours:if ( 'post-type' == get_post_type() ) {}
turtledropbomb le

is_post_type () est amorti.
Lisa Cerilli

23

Pour vérifier si une publication est un type de publication personnalisé, récupérez 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!';

Cela devrait être la réponse acceptée.
aalaap

10

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") {
}

5

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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.