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!
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.
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:
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:
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.
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:
OBJET
, ARRAY_A
(un tableau associatif) ou ARRAY_N
(un tableau numérique).'brut'
donc il ne sera pas filtré à moins que vous ne le définissiez à 'modifier'
, 'afficher'
, 'attribut'
ou 'js'
.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_Query
paramè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).
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_Query
Les 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.have_posts ()
Sans accepter aucun paramètre, cette fonction renvoie simplement VRAI
si la requête renvoie des enregistrements et FAUX
si non.
la poste()
Le Codex dit qu'il "itère l'indice de publication dans la boucle". Il fait plusieurs choses:
$ post
Les données.dans la boucle
paramètre à VRAI
.$ 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.
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..
$ post
: wp_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.
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.
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?
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.
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!