Tout savoir sur La Boucle de WordPress

Table des matières

Dès lors que vous voudrez afficher plusieurs publications avec un format identique, La Boucle met en place toute la structure nécéssaire pour afficher ces contenus.

À l’intérieur de La Boucle WordPress récupère chaque information à afficher sur la page en cours de lecture par l’internaute et les affiche selon les instructions du thème.

On la voit souvent décrite sur la toile sous l’appellation The Loop dans la langue de Shakespeare, mais voici à quoi ça ressemble :

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
  ...
<?php endwhile; endif; ?>

Si on traduit littéralement :

  • if ( have_posts() ) : si la page que je souhaite afficher contient une ou plusieurs publications
  • while ( have_posts() ) : et tant que j’ai du contenu à afficher
  • the_post() : je demande à WordPress d’initialiser cette publication pour récupérer des informations comme le titre, l’auteur, l’image mise en avant ou autres…

Pour faire simple, son nom parle de lui même mais La Boucle passe en revue pour chaque contenu de notre page en cours les actions spécifiées dans notre thème WordPress.

Pourquoi utiliser la boucle ?

À de nombreuses reprises sur un site tu te retrouveras à utiliser des extraits de contenus, par exemple :

  • Les articles les plus récents sur la page d’accueil ;
  • Une liste d’articles triés dans une archive de catégorie ;
  • Tous les articles d’une personne avec l’archive des auteurs.

De manière générale, n’importe quelle archive de contenu est là pour teaser, donc tu y trouveras pas la totalité du contenu affiché mais qu’une accroche qui incite à cliquer pour voir en détail toute la publication.

À chaque exécution de La Boucle, WordPress extrait les informations de la base de données et remplace ces données en lieu et place des Template Tags. Chacune des ces balises sera traité pour chaque contenu à afficher.


Quelles informations sont disponibles dans ma page ?

Nous allons le voir ensemble dans le prochain chapitre, grâce aux Template Tags il est possible d’afficher des informations récupérées dans la base de données de WordPress comme par exemple :

  • La liste des catégories liées à un article
  • Le nom de l’auteur d’un contenu
  • Le titre de la page courante
  • La date de publication
  • Une lien vers le contenu précédent ou suivant

J’en passe et des meilleures car en réalité, comme on peut le pressentir, le Template Hierarchy et La Boucle fonctionnent de pair pour restituer le contenu d’une page en bonne et due forme.

Afficher un message si aucun contenu n’existe

Il existe de rares cas ou il n’y aura pas de contenu dans la page que l’internaute souhaite afficher. La moindre des choses serait de l’informer. On va donc modifier notre template de départ et le faire évoluer de la manière suivante :

<?php if ( have_posts() ) : ?>
    <?php while ( have_posts() ) : the_post(); ?> 
        <!-- Afficher le template ici quand il y a du contenu -->
    <?php endwhile;?>
<?php else : ?>
    <!-- Afficher un message ici, lorsqu'il n'y a pas de contenu -->
<?php endif; ?>

Libre à vous maintenant d’afficher un message personnalisé entre <?php else : ?> et <?php endif; ?> pour annoncer qu’aucun contenu n’a été trouvé dans la base de données de WordPress.

Exemples de Boucle WordPress

Afficher le contenu d’une page

Si on souhaite afficher le titre et le contenu d’une page (et si vous avez suivi jusqu’ici), d’après la hiérarchie de Template nous utiliserons le fichier page.php.

On récupère dans un premier temps le header commun à toutes les page du site. Puis j’utilise la boucle pour afficher les informations de la page en cours de lecture : à l’intérieur d’un <h1> le titre avec la fonction the_title() et en dessous le contenu avec the_content().

Voici à quoi ressemblera ce fichier :

<?php get_header(); ?>
<main>
  <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
    <h1><?php the_title() ?></h1>
    <?php the_content() ?>
  <?php endwhile; endif; ?>
</main>
<?php get_footer(); ?>

Afficher le contenu d’un listing d’article d’une catégorie

De la même manière nous utiliserons la Boucle de WordPress pour lister tous les articles appartenant à une catégorie depuis le template category.php :

<?php get_header(); ?>
<main>
  <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
    <article <?php post_class(); ?>>
        <h2><?php the_title() ?></h1>
        <?php the_excerpt() ?>
    </article>
  <?php endwhile; endif; ?>
</main>
<?php get_footer(); ?>

Comment Modifier la boucle par défaut ?

Quand est-ce que cela est utile ?

  • Modifier le nombre d’articles affichés par défaut
  • Cacher les articles trop datés
  • Exclure les contenus qui sont dans une certaine catégorie

Avant de changer les réglages lorsque WordPress récupère les contenus par défaut, il est nécéssaire d’être à l’aise avec les hooks et comprendre les paramètres de la WP_Query.

Il est possible de se brancher juste avant que WordPress interroge la base de données, pour se faire on va se hooker sur pre_get_posts de la manière suivante :

Afficher les articles qui datent de moins d’un an

function learn_last_year_posts( $query ) {
    if ( ! is_admin() && $query->is_main_query() ) {
        if ( $query->is_home() ) {
            $now = new Datetime();
            $query->set( 'date_query', array(
                array(
                    'after' => 'May 17, 2019', 
                )
            ) ); 
        }
    }
}
add_action( 'pre_get_posts', 'learn_last_year_posts' );