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é.
Vous êtes ici: get_post_type()
puis if ( 'book' == get_post_type() ) ...
selon Balises conditionnelles> Type de message dans Codex.
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 .
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
}
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!';
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") {
}
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.