Existe-t-il une fonction qui renvoie simplement le "type de page" actuel au lieu d'utiliser is_page (), is_preview (), is_single (), is_archive (), etc.?
Par exemple: je peux trouver le "type de message" actuel, mais je ne trouve pas le "type de page" correspondant.
Vous avez besoin de votre propre fonction d'assistance qui vous retournera ce dont vous avez besoin. Cela pourrait être comme celui-ci:
function wpse8170_loop() {
global $wp_query;
$loop = 'notfound';
if ( $wp_query->is_page ) {
$loop = is_front_page() ? 'front' : 'page';
} elseif ( $wp_query->is_home ) {
$loop = 'home';
} elseif ( $wp_query->is_single ) {
$loop = ( $wp_query->is_attachment ) ? 'attachment' : 'single';
} elseif ( $wp_query->is_category ) {
$loop = 'category';
} elseif ( $wp_query->is_tag ) {
$loop = 'tag';
} elseif ( $wp_query->is_tax ) {
$loop = 'tax';
} elseif ( $wp_query->is_archive ) {
if ( $wp_query->is_day ) {
$loop = 'day';
} elseif ( $wp_query->is_month ) {
$loop = 'month';
} elseif ( $wp_query->is_year ) {
$loop = 'year';
} elseif ( $wp_query->is_author ) {
$loop = 'author';
} else {
$loop = 'archive';
}
} elseif ( $wp_query->is_search ) {
$loop = 'search';
} elseif ( $wp_query->is_404 ) {
$loop = 'notfound';
}
return $loop;
}
<?php
var_dump(get_query_var('post_type'));
mais même que cette page peut être un simple ou une archive ou autre chose ...
Qu'est-ce que vous voulez atteindre? Peut-être dans ce cas sera mieux comprendre ce dont vous avez besoin.
mettre à jour. Jetez un coup d'œil à l'exemple de fonction de thème que vous pouvez utiliser pour mener à bien cette tâche. function appelée vingteleven_body_classes à partir de Twentyeleven theme. il retourne des classes utilisables pour le filtre body_classes
function twentyeleven_body_classes( $classes ) {
if ( function_exists( 'is_multi_author' ) && ! is_multi_author() )
$classes[] = 'single-author';
if ( is_singular() && ! is_home() && ! is_page_template( 'showcase.php' ) && ! is_page_template( 'sidebar-page.php' ) )
$classes[] = 'singular';
return $classes;
}
rien ne vous empêche de ne pas ajouter de classes supplémentaires. is_archive () ou quelque chose d'autre ... dans ce cas, vous avez un type de page que vous voulez.
Si vous placez cette balise de modèle dans la balise Body <?php body_class(); ?>
, elle sera affichée dans votre code, à savoir <body <?php body_class(); ?>>
. Elle vous donnera les modèles référencés pour la page donnée.
Vous pouvez également indiquer le chemin d'accès au modèle de page appelé p.ex. page.php ou single-posttype.php en utilisant ceci: <?php echo get_page_template() ?>
Je suis un peu trop tard, mais une solution plus petite et meilleure utilisant un filtre de tableau serait:
function getPage( $arrayIn ) {
$prefix = 'is_';
$array = array_filter( array_filter( (array) $arrayIn, function ( $key ) use ( $prefix ) {
return ( strpos( $key, $prefix ) === 0 );
}, ARRAY_FILTER_USE_KEY ) );
unset( $array['is_singular'] );
return preg_replace( '/^' . preg_quote( $prefix, '/' ) . '/', '', key( $array ) );
}