# Boucle

> La Boucle est le mécanisme PHP qui parcourt les articles renvoyés par une requête WordPress pour afficher chacun d'eux via des fonctions de gabarit.

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

Quand un thème doit afficher une liste d'articles, il ne les récupère pas un par un manuellement : il délègue ce travail à une structure répétitive standardisée, présente dans presque tous les gabarits WordPress depuis ses débuts.

## Fonctionnement

La Boucle s'appuie sur deux fonctions : `have_posts()`, qui vérifie s'il reste des articles à traiter dans la requête courante, et `the_post()`, qui avance le pointeur interne et configure les données globales (`$post`) pour l'article suivant. À l'intérieur, des fonctions de gabarit comme `the_title()` ou `the_content()` affichent les données de l'article en cours.

## Exemple

```
if ( have_posts() ) {
    while ( have_posts() ) {
        the_post();
        the_title( '<h2>', '</h2>' );
        the_excerpt();
    }
}
```

## À ne pas confondre avec

- La requête principale, qui détermine quels articles seront parcourus ; la Boucle ne fait que les afficher.
- Une requête personnalisée avec un second `WP_Query`, qui exige d'utiliser ses propres méthodes (`$ma_requete->have_posts()`) et un `wp_reset_postdata()` final pour ne pas perturber la boucle principale.

## Bon à savoir

Imbriquer deux boucles principales sans réinitialiser les données globales est une source classique de bugs d'affichage, notamment quand un widget ou un shortcode lance sa propre requête au milieu d'un gabarit.

Certains thèmes proposent une variante avec `foreach` directement sur la propriété `posts` de l'objet requête, mais cette approche ne met pas à jour les données globales de l'article courant : les fonctions de gabarit qui dépendent de `$post`, comme `the_title()`, cesseraient alors de fonctionner correctement sans un appel manuel supplémentaire à `setup_postdata()`.
