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 unwp_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().