Students Save 30%! Learn & create with unlimited courses & creative assets Students Save 30%! Save Now
Advertisement
  1. Code
  2. WordPress
Code

Maitriser WP_Query : Utilisation de la boucle

by
Difficulty:IntermediateLength:ShortLanguages:
This post is part of a series called Mastering WP_Query.
Mastering WP_Query: An Introduction
Mastering WP_Query: Related Functions

French (Français) translation by Jean-Frédéric Barré (you can also view the original English article)

Comme nous l'avons vu dans la partie précédente, la classe WP_Query possède quatre éléments principaux :

  • les arguments de la requête, qui utilisent des paramètres que nous allons voir en détails dans la suite de cette série
  • la requête elle même
  • la boucle, qui va afficher les contenu des billets, les titres ou tout autres éléments du billet
  • la fin de boucle qui va fermer les "if" et "while" et remettre à zéro la boucle.

Dans ce tutoriel, je vais vous montrer les deux façons principale d' utiliser la boucle avec WP_Query et comment utilise plusieurs boucle sur une même page.

Où utiliser la boucle ?

Sans une boucle, rien ne s'affichera sur votre page. Après que WordPress ai lancé la requête principale, il faut lui indiquer quoi afficher dans tout ce tas de données. C'est là que la boucle intervient.

La boucle vient donc après votre requête, elle utilise trois marqueurs :

  • if( $query->have_posts() ) vérifie s'il y a bien des billets.
  • while( $query->have_posts() ) répète la boucle pour chacun des billets, jusqu'à ce qu'il n'y ait plus de billets à afficher.
  • $query->the_post() permet d'accéder à ces billets.

C'est donc ici que la boucle utilise la classe WP_Query.

Après la boucle, ce qu'il reste à faire c'est "rangé" la requête avec wp_reset_postdata().

La structure de la boucle

La manière dont est structuré votre boucle va dépendre des données que vous voulez afficher. Voici l'exemple d'une boucle affichant le titre du billet, l'image mise en avant et le résumé. Il est probable que vous utilisiez cette boucle sur vos pages archives.

Cette boucle affiche exactement ce que nous avons décrit précédemment : image à la une, titre et résumé.

Approfondissons la boucle : vérifier le contenu

Vous pouvez parfois avoir envie d'ajouter une ligne de texte avant la liste des billets ou bien vous pouvez avoir envie d'inclure cette liste dans un conteneur particulier. Si vous ajouté simplement cet élément avant la boucle, il sera ajouté de manière systématique, même s'il n'y a pas de billets à afficher.

Pour régler ce problème, il suffit de placer notre élément dans la boucle if.

Ici vous pouvez voir que je vérifie qu'il y a bien des billets à afficher et, s'il y en a, j'ajoute un conteneur et une phrase. 

C'est aussi très pratique si vous voulez afficher le contenu de votre requête sous forme de liste. Disons que je veux afficher la liste de tous les billets d'une catégorie particulière. L'élément ul ne se trouve pas dans la boucle car il n'est pas attaché à un billet en particulier. Je veux le voir uniquement s'il y a des billets. J'utilise donc ceci :

Ceci vérifie que la requête retourne des billets et si et seulement si c'est le cas, alors il ouvre un élément ul et y lance la boucle.

Lancer des boucles supplémentaires

Il faut absolument comprendre que si vous utilisez WP_Query pour lancer plusieurs boucles, vous devez remettre à zéro la requête avant de lancer une nouvelle instance de WP_Query. Il en va ainsi car chacune des boucles va afficher des billets en fonctions de différents arguments.

Cet exemple affiche le résumé et l'image à la une pour le premier billet et ensuite uniquement le titre des billets suivants :

J'utilise ici deux arguments essentiels :

  • 'posts_per_page' => '1' , utilisé avec la première requête, il affiche le billet le plus récent.
  • 'offset' = '1' , utilisé dans la seconde boucle, il exclu le premier billet afin d'éviter d'afficher deux fois le même contenu.
  • Comme vous pouvez le constater dans l'exemple ci-dessus, la boucle est légèrement différente pour chacune des requêtes. La première affiche l'image à la une, le titre et le résumé alors que la seconde vérifie que la requête retourne bien des billets et, si c'est le cas, ouvre un élément ul et y intègre le titre avec lien dans un élément li, et ceci pour chacun des billets retourné par la requête.

Vous remarquerez aussi que j'utilise wp_reset_postdata() après chacune des boucles. Si je n'avais pas fait cela, la seconde boucle continuerait de renvoyer les données de la première.

Récapitulatif :

Sans une boucle, WP_Query ne sert pas à grand chose. La boucle est le code que vous utilisez pour afficher les données renvoyées par la requête de WordPress.

Comme nous venons de le voir, l'utilisation de la boucle peut varier en fonction des circonstances. Une boucle simple va afficher tous les billets dans l'ordre que vous aurez spécifié via les arguments de la requête (par date en ordre descendant par défaut). Si vous séparé if( $query->have_posts() ) et while( $query->have_posts() ), vous pourrez ajouter du code supplémentaire en dehors de la boucle mais uniquement si votre requête renvoie des données. Pour finir, en spécifiant des arguments et en utilisant wp_reset_postdata() après chacune des boucles, vous pouvez utiliser WP_Query plusieurs fois pour créer des boucles multiples sur une seule et même page.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.