If est un type de publication personnalisé

89

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

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

Je souhaite tester le code uniquement pour un type d'article personnalisé. Toute aide serait grandement appréciée!

    
posée Adam Thompson 11.01.2011 - 17:54

6 réponses

115

Vous voici: get_post_type() , puis if ( 'book' == get_post_type() ) ... selon Tags conditionnels > Un type de message dans le Codex.

    
réponse donnée Szymon Skulimowski 11.01.2011 - 18:12
147
if ( is_singular( 'book' ) ) {
    // conditional content/code
}

Le texte ci-dessus correspond à true lors de l'affichage d'un message de type personnalisé: book .

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

Le texte ci-dessus correspond à true lors de l'affichage d'une publication de type personnalisé: newspaper ou book .

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

    
réponse donnée Mark Rummel 12.06.2012 - 18:41
24

Pour ceux qui recherchent ceci, ajoutez-le à votre functions.php et vous pourrez 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;
}

afin que vous puissiez maintenant utiliser les éléments suivants:

if (is_single() && is_post_type('post_type')){
  //work magic
}
    
réponse donnée Mild Fuzz 06.07.2011 - 15:41
21

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 );
}

Utilisation:

if ( is_custom_post_type() )
    print 'This is a custom post type!';
    
réponse donnée fuxia 15.04.2013 - 17:22
8

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") {
}
    
réponse donnée ino 01.02.2013 - 22:30
3

Si vous souhaitez une vérification avec un 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.

    
réponse donnée kosinix 30.01.2014 - 04:52

Lire d'autres questions sur les étiquettes