Advertisement
  1. Code
  2. WordPress
Code

Maitriser WP_Query : Fonctions liées

by
Difficulty:IntermediateLength:MediumLanguages:
This post is part of a series called Mastering WP_Query.
Mastering WP_Query: Using the Loop
Mastering WP_Query: Actions and Filters

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

Salut et bienvenue dans cette seconde partie de cette série intitulée "Maitriser WP_Query". Dans la première partie, nous avons entamé cette série par une simple introduction à la classe WP_Query. Dans cette seconde partie, nous allons voir les fonctions liées à WP_Query.

Allons-y !

Exploiter la puissance de WP_Query avec les fonctions, les actions et les filtres.

Je ne suis pas une experte de la programmation, mais je peut me rendre compte que la classe WP_Query est très bon exemple de modèle MVC (Model View Controler). Ce système est très puissant, extensible et très simple d'utilisation une fois que l'on maitrise les bases.

En plus de ses propriétés, ses méthodes et ses paramètres (nous les verrons dans la suite de cette série), WordPress met à votre disposition des fonctions et des "hooks" supplémentaires qui fonctionnent avec la classe WP_Query. Dans ce tutoriel, nous allons apprendre à utiliser les fonctions et dans la partie suivante, nous verrons les actions et les filtres utilisables avec WP_Query. S'il vous semble que j'oublie des choses, n'hésitez pas à me le faire savoir en laissant un commentaire.

Les fonctions liées à WP_Query.

Il existe 13 fonctions différentes qui sont utilisables avec la classe WP_Query et qui peuvent vous aider à maitriser la puissance de cette classe. Pas besoin d'introduction, allons y directement !

Récupérer les variables d'une requête publique : get_query_var()

Le nom de notre première fonction parle d'elle même : elle utilise la variable globale $wp_query et renvoie une requête publique. Nous pouvons lui assigner deux paramètres. Le premier est la variable et le second est une valeur par défaut assignée automatiquement si aucune autre n'a été informé.

Modifier la boucle principale : query_posts()

Pour être tout à fait honnête, ce n'est pas une bonne fonction. Vous n'avez vraiment pas besoin de l'utiliser mais, dans le cadre de cette explication, je vais vous expliquer pourquoi ce n'est pas une bonne fonction.

query_posts() est une fonction qui modifie la requête principale en la mettant de côté et en créant une nouvelle requête ... vous aurez besoin d'utiliser wp_reset_query() pour "nettoyer" la requête à la fin.

Cette fonction fait partie des fonctions les moins bien utilisées de WordPress. Vous ne devriez pas l'utiliser pour créer une requête secondaire. Vous devriez plutôt utiliser la classe WP_Query ou bien la fonction get_posts() que nous verrons plus loin. Je ne vous conseil pas de l'utiliser pour modifier la requête principale, utilisez plutôt l'action pre_get_posts Même le Codex WordPress met en garde sur l'utilisation de cette fonction et vous propose des alternatives.

Point négatif : Ne pas l'utiliser.

Récupérer un billet unique : get_post()

Elle aussi très explicite, la fonction get_post() permet de récupérer un billet unique. Cette fonction possède trois paramètres :

  • Le premier, l'ID du billet (ou l'ID du billet courant).
  • Le second paramètre est le type de résultat retourné : un OBJECT, un ARRAY_A (un tableau associé) ou bien un ARRAY_N (un tableau numérique.)
  • Le troisième permet de choisir comment filtrer les résultats. Par défaut il est régle sur 'raw' c'est à dire qu'il n'y aura pas de filtrage tant que vous ne l'aurai pas réglé sur 'edit''display', 'attribute' ou bien 'js'.

Sauvegarder la requête dans un tableau : get_posts()

La fonction get_posts() nous permet de lancer une requête et de sauvegarder les résultats dans un tableau pour une utilisation ultérieures. Cette fonction requière les mêmes arguments que WP_Query, vous permettant de modifier la requête à votre convenance. Nous verrons plus tard les paramètres de WP_Query C'est la meilleure façon de créer des listes de billets ... mais ce n'est pas une boucle !

Bien que cette fonction puisse être utilisée pour lancer une seconde requête, le Codex recommande plutôt l'utilisation de WP_Query dans le cas de boucles multiples et l'utilisation de get_posts() lorsqu'il faut renvoyer une liste de billets. Peter R. Knight explique assez bien la différence entre get_posts() et WP_Query : la différence principale est que WP_Query va chercher plus d'informations différentes (les données du billet, les méta-données, les infos sur l'auteur, les commentaires), alors que get_posts() ne demande qu'une chose, les données du billet (post data).

Récupérer les pages : get_pages()

Cette étrange fonction se charge de récupérer une liste de pages ; bien que cette fonction ait un paramètre post_type vous permettant de sélectionner un type de contenu (le type de contenu doit être de type "hiérarchique", sinon la fonction retourne automatiquement false).

Cette fonction utilise des arguments très similaires à ceux de WP_Query, quoi-que sensiblement différents.

  • sort_order : permet de trier les pages dans un ordre ascendant (asc) ou descendant (desc)
  • sort-column : comment trier les pages. accèpte post_titlemenu_orderpost_date, post_modifiedIDpost_author, et post_name.
  • hierarchical: Faut-il trier les pages de manière hiérarchique (1) ou pas (0).
  • exclude : une liste d' iD à exclure, séparées par des virgules.
  • include : une liste d' ID à inclure dans la liste et à exclure partout ailleurs.
  • meta_key: lorsque vous l'utilisez avec l'argument meta_value,  il n'inclut que les pages ayant la meta_key ou la meta_value indiquée.
  • meta_value: lorsqu'utilisé avec l'argument meta_key, il n'inclut que les pages possédant la meta_value et la meta_key indiquée.
  • authors : une liste des ID des auteurs, séparées par des virgules.
  • child_of : l' ID de la page pour laquelle il faut récupérer les pages enfants et petits-enfants.
  • parent : lister les pages qui ont pour parent l'ID que vous informée. Pour que cet argument fonctionne, le hierarchical argument doit être réglé sur 0.
  • exclude_tree: une liste des ID de page à exclure, ainsi que leurs enfants.
  • number : le nombre de page à récupérer.
  • offset : nombre de page à exclure en partant du premier.
  • post_type : le type de contenu à rechercher. Bien évidemment, par défaut le réglage est page.
  • post_status : une liste des status à inclure.

Vérifier que la requête renvoie des billets : have_posts()

Cette fonction n'a pas de paramètres. Elle se contente de renvoyer TRUE si la requête à trouvé des billets ou FALSE dans le cas contraire.

Travaillons avec la boucle : the_post()

Selon le Codex WordPress, cette fonction se répète dans la boucle ... (note du traducteur : à vérifier/corriger) Elle fait plusieurs choses :

  1. Elle récupère la donnée suivante de la requête.
  2. Elle règle la variable $post
  3. Elle règle le paramètre in_the_loop sur TRUE

Réglage de $postsetup_postdata()

Cette fonction parle d'elle même : elle règle les données principales du billet. Voyons ce qu'en dit le Codex :

setup_postdata() règle les variables $id, $authordata, $currentday, $currentmonth, $page, $pages, $multipage, $more, $numpages, qui seront utilisées par différents "Template Tags". Il ne règle pas la variable $post, mais ces argument y font référence. (note du traducteur : pas clair)

Nettoyer la boucle en cours : rewind_posts()

Encore une fois, le nom parle de lui même. Cette fonction sert simplement à revenir au début de la boucle pour permettre de la réutiliser.

Remettre à zéro $postwp_reset_postdata()

Cette fonction remet la variable $post dans le même état que le premier billet de la requête principale. Il est mieux d'utiliser cette dernière en après une seconde requête.

Remettre à zéro la requête : wp_reset_query()

Cette fonction devrait être utilisée si vous avez modifié la requête principale (avec la fonction query_posts() ou l'action pre_get_posts) afin de pouvoir remettre à zéro la requête principale.

Vérifier si la requête en cours est la requête principale : is_main_query()

Voici un Conditional Tag qui renvoie TRUE si la requête en cours est la requête principale et FALSE si ce n'est pas le cas. Simple non ?

Vérifier si nous sommes dans la boucle : in_the_loop()

Voici un autre Conditional Tag : in_the_loop renvoie TRUE ou FALSE si vous êtes dans la boucle ou pas.

Fin de la seconde partie.

Et voilà ! Désormais vous connaissez (probablement) toutes les fonctions liées à WP_Query ! Bientôt la suite où nous en apprendrons plus sur les filtres et les actions liés à WP_Query.

Avez-vous des commentaires ou des choses à ajouter dans cette partie ? N'hésitez pas à commenter. Et, si vous avez appréciez cet article, n'hésitez pas à le partager.

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.