# Balise conditionnelle

> Une balise conditionnelle est une fonction PHP qui renvoie vrai ou faux selon le contexte de la page affichée, pour adapter l'affichage d'un gabarit WordPress.

- Auteur : Clément Hadrot
- Publié le : 2026-09-25
- Mis à jour le : 2026-09-25
- URL : https://wpmoderne.dev.wordpress-developpement.fr/lexique/balise-conditionnelle/

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.php` avant le hook `wp` renvoie systématiquement `false`, 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 utilise `is_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()` ou `is_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.
