Maîtriser WP_Query fonctions connexes

Bonjour et bienvenue dans la deuxième partie de la série intitulée "Mastering WP_Query". Dans la première partie, nous avons commencé avec la série en présentant simplement ce que le WP_Query la classe est. Et dans cette deuxième partie, nous allons en apprendre davantage sur les fonctions liées à WP_Query.

Commençons!

Exploiter la puissance de WP_Query avec des fonctions, des actions et des filtres

Je ne suis pas un expert en programmation, mais je peux voir que le WP_Query La classe est l'un des meilleurs exemples du modèle MVC. Il est extrêmement puissant, totalement extensible et très facile à utiliser une fois que vous maîtrisez les bases.

En plus de ses propriétés, méthodes et paramètres (que nous verrons plus tard), WordPress offre des fonctions supplémentaires et des points d'ancrage (actions et filtres) pour travailler avec le WP_Query classe. Dans ce tutoriel, nous allons apprendre à connaître les fonctions et dans la partie suivante, nous verrons des actions et des filtres liés à WP_Query. Si vous voyez que j'ai oublié quelque chose, n'hésitez pas à me prévenir en envoyant un commentaire.

WP_Query Fonctions connexes

Il y a 13 fonctions WordPress qui fonctionnent avec le WP_Query classe qui peut vous aider à exploiter le pouvoir de WP_Query. Ils n'ont besoin d'aucune introduction, alors allons-y:

Obtention de variables de requête publiques: get_query_var ()

Le nom de notre première fonction parle de lui-même, vraiment: il faut le global $ wp_query object et en récupère une variable de requête publique. Il a deux paramètres: le premier est la variable pour renvoyer sa valeur et le second est une valeur par défaut à renvoyer si la variable n'est pas définie:

Affectant la boucle principale: query_posts ()

Pour être honnête, c’est un mal une fonction. Vous n'avez vraiment pas besoin de l'utiliser du tout, mais dans le but de dire "la bonne façon", nous allons l'examiner et vous dire que c'est "la mauvaise façon".

query_posts () est une fonction qui modifie la requête principale en la mettant de côté et en exécutant une nouvelle. Vous devrez utiliser wp_reset_query () nettoyer après.

Cette fonction est l’un des plus mal utilisé fonctions dans le noyau de WordPress. Vous ne devriez pas l'utiliser pour créer des requêtes secondaires, vous pouvez utiliser le WP_Query classe ou la get_posts () fonction (dont nous parlerons plus loin dans ce tutoriel). Vous ne devriez pas l'utiliser pour modifier la requête principale non plus, vous devriez utiliser le pre_get_posts action (dont nous parlerons plus tard). Même le Codex nous décourage de l’utiliser et montre des alternatives.

Bottom line: Ne l'utilisez pas.

Obtenir un seul poste: get_post ()

Une autre fonction qui s’explique d'elle-même est get_post (), que vous utilisez pour obtenir un seul post. Il a trois paramètres facultatifs:

  • Le premier est l'ID de la publication (ou l'ID de la publication actuelle par défaut).
  • La seconde est le type de résultat obtenu: soit OBJET, ARRAY_A (un tableau associatif) ou ARRAY_N (un tableau numérique).
  • Le troisième est le choix de filtrer le résultat. La valeur par défaut est 'brut' donc il ne sera pas filtré à moins que vous ne le définissiez à 'modifier', 'afficher', 'attribut' ou 'js'.

Enregistrement de requêtes dans des tableaux: get_posts ()

le get_posts () Cette fonction nous permet d’exécuter des requêtes et de les enregistrer sous forme de tableaux à utiliser à divers endroits. Il nécessite les mêmes arguments avec WP_Query afin que vous puissiez personnaliser la requête à votre guise. (Nous aurons à passer en revue WP_Queryparamètres du futur, alors restez à l’écoute!) C’est le moyen le plus efficace et le plus efficace de créer des listes de publications, mais pas de boucles..

 'news', 'order' => 'ASC', 'orderby' => 'post_title', 'posts_per_page' => -1); // Retourne un tableau de tous les articles de la catégorie "nouvelles". $ all_posts_list = get_posts ($ args); ?>

Bien que cette fonction puisse être utilisée pour exécuter des "requêtes secondaires" sans problème, le Codex recommande d'utiliser WP_Query lors de la création de plusieurs boucles et en utilisant get_posts () lors de la récupération d'une liste de messages. Peter R. Knight explique la différence entre get_posts () et WP_Query en termes simples: la principale différence est que WP_Query effectue davantage de requêtes dans la base de données (données de publication, métadonnées, données de l'auteur et données de commentaire) get_posts () fait une seule requête (post data).

Obtenir des pages: get_pages ()

Ce impair Cette fonction a pour but d’extraire une liste de pages, bien qu’elle ait un Type de poste paramètre qui peut également vous permettre de sélectionner un autre type de publication (à condition que le type de publication soit hiérarchique, sinon il renvoie faux).

 'ASC', 'sort_column' => 'post_title', 'hierarchical' => 1, 'exclude' => ", 'include' =>", 'meta_key' => ", 'meta_value' =>", "auteurs '=> ",' child_of '=> 0,' parent '=> -1,' exclude_tree '=>", "number" => ",' offset '=> 0,' post_type '=>' page ', 'post_status' => 'publier'); $ pages = get_pages ($ args);?>

Il accepte des arguments très similaires à WP_QueryLes arguments de, mais ils sont légèrement différents:

  • ordre de tri: S'il faut trier les pages par ordre croissant (asc) ou décroissant (desc) ordre.
  • sort_column: Comment trier les pages. Accepte titre de l'article, menu_order, postdater, post_modified, ID, post_author, et après le nom.
  • hiérarchique: S'il faut lister les pages hiérarchiquement (1) ou pas (0).
  • exclure: Une liste séparée par des virgules ou un tableau d'ID de page à exclure de la liste.
  • comprendre: Une liste séparée par des virgules ou un tableau d'ID de page à inclure dans la liste et exclure tout le reste.
  • meta_key: Utilisé avec le meta_value argument, il ne comprend que les pages qui ont la clé méta et la valeur définies.
  • meta_value: Utilisé avec le meta_key argument, il ne comprend que les pages qui ont la clé méta et la valeur définies.
  • auteurs: Liste d'identifiants d'auteur séparés par des virgules.
  • enfant de: Identifiant d'une page pour ne récupérer que ses enfants et petits-enfants dans la liste.
  • parent: Répertorie les pages dont l'ID de page fourni est parent. Pour que cet argument fonctionne, le hiérarchique l'argument doit être réglé sur 0.
  • exclude_tree: Une liste séparée par des virgules ou un tableau d'ID de page à exclure avec ses enfants.
  • nombre: Nombre de pages à récupérer.
  • décalage: Nombre de pages à sauter du haut.
  • Type de poste: Le type de message à interroger. Naturellement, la valeur par défaut est: page.
  • post_status: Liste des types de statut de publication séparés par des virgules à inclure.

Vérifier si la requête renvoie des messages: have_posts ()

Sans accepter aucun paramètre, cette fonction renvoie simplement VRAI si la requête renvoie des enregistrements et FAUX si non.

Travailler la boucle: la poste()

Le Codex dit qu'il "itère l'indice de publication dans la boucle". Il fait plusieurs choses:

  1. Il récupère le prochain enregistrement de la requête.
  2. Il met en place le $ post Les données.
  3. Il définit le dans la boucle paramètre à VRAI.

Mise en place $ post: setup_postdata ()

Cette fonction parle également pour elle-même: elle configure les données de publication globales. Voyons ce que dit le Codex à propos de celui-ci:

setup_postdata () remplit les variables globales $ id, $ authordata, $ currentday, $ currentmonth, $ page, $ pages, $ multipage, $ more, $ numpages, qui aident de nombreuses balises de modèle à fonctionner dans le contexte de publication actuel. Il n'assigne pas le global $ post variable, mais semble s'attendre à ce que son argument soit une référence à celui-ci.

Effacement de la boucle de courant: rewind_posts ()

Encore une autre fonction dont le nom indique sa fonctionnalité: Cette fonction "rembobine" simplement la boucle afin que vous puissiez la réexécuter ultérieurement..

Réinitialisation $ postwp_reset_postdata ()

Cette fonction réinitialise le global $ post variable retour à la première publication de la requête principale. Il vaut mieux utiliser celui-ci après une requête secondaire.

Réinitialisation de la requête: wp_reset_query ()

Celui-ci doit être utilisé si la requête principale est modifiée (avec le query_posts () fonction ou la pre_get_posts action que nous verrons dans la partie suivante) afin que la requête principale puisse être réinitialisée.

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

Celui-ci est une balise conditionnelle qui retourne VRAI si la requête en cours est la requête principale et FAUX si ce n'est pas. Simple, droit?

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

Une autre balise conditionnelle est dans la boucle() qui retourne simplement VRAI ou FAUX si votre code tourne dans la boucle ou non.

Fin de la deuxième partie

Voilà, vous connaissez (probablement) toutes les fonctions liées à WP_Query! Restez à l'écoute pour la prochaine partie où nous en apprendrons plus sur WP_Query actions et filtres associés.

Avez-vous des commentaires ou quelque chose à ajouter à cette partie? Ne hésitez pas à partager vos pensées en commentant ci-dessous. Et si vous avez aimé l'article, n'oubliez pas de le partager avec vos amis!