Tout savoir sur La Boucle de WordPress

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.

Tu le verras souvent aussi Ă©crit 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 :

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 :

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 :

J’en passe et des meilleures car en rĂ©alitĂ©, tu le sens venir mais 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 l’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 ?

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' );