Dans un thème WordPress, un même fichier de gabarit doit souvent réagir différemment selon la page consultée : afficher un titre d’archive ici, masquer la barre latérale là. C’est le rôle des balises conditionnelles, des fonctions comme is_single(), is_page() ou is_home() qui interrogent la requête en cours et renvoient un booléen.
Fonctionnement dans WordPress
Chaque balise conditionnelle lit l’état de l’objet WP_Query associé à la requête principale. Elle doit être appelée après que WordPress a déterminé quelle page afficher, c’est-à-dire à partir du hook wp ou dans le corps d’un gabarit — jamais avant, sous peine de résultats faux. Les plus courantes sont is_front_page(), is_archive(), is_category(), is_singular() et is_admin().
Exemple
if ( is_singular( 'post' ) && has_post_thumbnail() ) {
the_post_thumbnail( 'large' );
} elseif ( is_archive() ) {
the_archive_title();
}
Ce fragment affiche l’image mise en avant sur un article, ou le titre d’archive sur une page de liste — deux comportements pilotés par une seule condition.
Pièges fréquents
- Utiliser une balise conditionnelle dans
functions.phpavant le hookwprenvoie systématiquementfalse, la requête n’étant pas encore résolue. is_page()ne fonctionne que pour le type de contenu page ; pour un type personnalisé, on utiliseis_singular( 'mon_type' ).- Sur une requête personnalisée (second
WP_Query), ces fonctions globales continuent de refléter la requête principale, pas la boucle secondaire. - Des balises moins connues comme
is_tax()ouis_post_type_archive()couvrent les taxonomies personnalisées et les archives de types de contenu sur mesure ; s’en tenir aux seules fonctions historiques liées aux articles conduit souvent à rater ces cas.
Bon à savoir
Certaines balises acceptent un paramètre pour affiner le test, comme is_page( 'contact' ) qui vérifie un slug précis plutôt que n’importe quelle page. Combiner plusieurs conditions dans un même if reste plus lisible que de multiplier les fichiers de gabarit spécialisés pour chaque cas de figure.