Leçon 6 / 10
Leçon 06 · ~25 min · Partie 2 — Les templates

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

index.php
<?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 titre
  • the_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'article
  • the_ID() — affiche l'ID de l'article
  • the_date('d/m/Y') — affiche la date de publication
  • the_author() — affiche le nom de l'auteur
  • the_post_thumbnail('medium') — affiche l'image à la une
  • post_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
<?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

PHP
// 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).

// à retenir
  • have_posts() + the_post() = structure fondamentale de toute boucle
  • the_post() est obligatoire dans le while — il initialise les données de l'article courant
  • the_xxx() affiche · get_the_xxx() retourne
  • Template tags essentiels : the_title(), the_content(), the_permalink(), the_excerpt()
  • Toujours vérifier has_post_thumbnail() avant the_post_thumbnail()
  • the_posts_pagination() pour la pagination après endwhile