Je veux vérifier dans functions.php
si la page réelle est une page de catégorie, une page de balise, ... mais les fonctions permettant de la vérifier (is_category()
, is_tag()
, ...) ne semblent pas fonctionner, comme suit:
if(is_category() || is_tag() || is_home())
ne passe jamais.
Par exemple. is_category () ne semble pas avoir besoin d'être appelé sur la boucle.
Une idée de pourquoi cela ne fonctionne pas et comment le résoudre?
Modifier:
L'exemple complet pour mon cas est:
dans functions.php
/* Add hentry class to body */
if(! function_exists( 'one_function' )) {
function one_function( $classes ) {
$classes[] = get_classes(); //this is a custom theme function which put the classes into an array.
$classes[] = 'hentry';
return $classes;
}
if(is_category() || is_tag() || is_home())
add_filter( 'body_class', 'one_function' ); //this is executed if removing the "if" condition
}
Votre problème est que vous ne l'avez pas encapsulé dans un rappel, mais que vous l'avez exécuté immédiatement lorsque functions.php
a été chargé par core. À ce moment-là, l'objet $wp_query
global n'est pas complètement initialisé et les wrappers is_category()
etc. ne peuvent pas fournir ce que vous attendez d'eux. Donc, vos vérifications if/else doivent être déplacées à l'intérieur du rappel comme ceci:
add_filter( 'body_class', 'addBodyClasses' );
function addBodyClasses( $classes )
{
if (
is_category()
|| is_tag()
|| is_home()
)
{
$classes = array_merge( $classes, array(
'hentry',
// other classes you want to add go here
) );
}
return $classes;
}