La boucle WordPress
C'est quoi "The Loop" ?
La boucle WordPress (The Loop) est le mécanisme par lequel WordPress récupère les articles depuis la base de données et les affiche un par un. C'est le cœur de tout template.
WordPress a déjà effectué la requête SQL avant d'exécuter ton template — il a déjà récupéré les articles correspondants à l'URL demandée. La boucle te donne juste accès à ces résultats.
Structure de base
<?php get_header(); ?>
<main class="site-main">
<?php if ( have_posts() ) : ?>
<?php while ( have_posts() ) : the_post(); ?>
<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
<p class="post-meta">
<?php the_date( 'd/m/Y' ); ?> —
<?php the_author(); ?>
</p>
<?php the_excerpt(); ?>
</article>
<?php endwhile; ?>
<?php the_posts_pagination(); ?>
<?php else : ?>
<p>Aucun article trouvé.</p>
<?php endif; ?>
</main>
<?php get_footer(); ?>
Décortiquons la boucle
have_posts()
Retourne true s'il reste des articles à afficher, false sinon. Le if extérieur vérifie qu'il y a au moins un article. Le while itère sur chacun.
the_post()
Avance le "curseur" interne de WordPress vers l'article suivant et initialise toutes les données globales de l'article courant. Obligatoire dans le while — sans lui, les template tags ne fonctionnent pas.
Les template tags essentiels
Une fois dans la boucle (après the_post()), ces fonctions retournent les données de l'article courant :
the_title()— affiche le titrethe_content()— affiche le contenu complet (avec les blocs Gutenberg rendus)the_excerpt()— affiche le résumé (auto ou manuel)the_permalink()— affiche l'URL de l'articlethe_ID()— affiche l'ID de l'articlethe_date('d/m/Y')— affiche la date de publicationthe_author()— affiche le nom de l'auteurthe_post_thumbnail('medium')— affiche l'image à la unepost_class()— injecte des classes CSS sur l'élément article
Chaque the_xxx() affiche directement. Son équivalent get_the_xxx() retourne la valeur sans l'afficher. Utilise get_the_title() quand tu veux stocker la valeur dans une variable.
Afficher l'image à la une
<?php if ( has_post_thumbnail() ) : ?>
<a href="<?php the_permalink(); ?>">
<?php the_post_thumbnail( 'medium' ); ?>
</a>
<?php endif; ?>
Les tailles disponibles par défaut : thumbnail (150×150), medium (300×300 max), large (1024×1024 max), full (taille originale).
Pagination
// Après endwhile — pagination numérotée
<?php the_posts_pagination( [
'prev_text' => '← Précédent',
'next_text' => 'Suivant →',
] ); ?>
// Ou pagination simple précédent / suivant
<?php the_posts_nav_link(); ?>
Ne jamais exécuter une nouvelle requête SQL à l'intérieur de la boucle pour afficher les mêmes articles — WordPress l'a déjà fait. Utilise WP_Query uniquement pour des requêtes supplémentaires (ex. afficher les articles liés).
have_posts()+the_post()= structure fondamentale de toute bouclethe_post()est obligatoire dans le while — il initialise les données de l'article courantthe_xxx()affiche ·get_the_xxx()retourne- Template tags essentiels :
the_title(),the_content(),the_permalink(),the_excerpt() - Toujours vérifier
has_post_thumbnail()avantthe_post_thumbnail() the_posts_pagination()pour la pagination aprèsendwhile