Bienvenue dans la troisième partie de notre série intitulée "Mastering WP_Query". Dans la partie précédente, nous avons examiné 13 fonctions WordPress liées au WP_Query
classe. Dans cette partie, nous examinerons les points d'ancrage WordPress (filtres et actions) que vous pouvez utiliser conjointement avec WP_Query
.
Alors, sans plus tarder, commençons!
Dans la "Référence de filtres" du Codex, 16 filtres WordPress sont répertoriés sous le titre "Filtres de WP_Query". Dans cette section, nous allons en parler. Ce sera une section assez rapide car la plupart des filtres concernent différentes "clauses" d’une requête de base de données faite par le WP_Query
classe.
Nous y reviendrons, juste après avoir passé en revue les filtres qui ne sont pas liés aux clauses.
found_posts
Ce filtre vous permet de changer le nombre d’éléments trouvés sans la limite qui vient de WP_Query
de posts_per_page
argument.
Ce filtre est particulièrement utile pour créer une pagination personnalisée. Voyons ce que dit le Codex:
Par exemple, si vous déclarez une valeur de décalage personnalisée dans vos requêtes, WordPress NE déduira PAS le décalage du paramètre $ wp_query-> found_posts (par exemple, si vous avez 45 publications utilisables après un décalage de 10, WordPress ignorera le offset et donne toujours à found_posts une valeur de 55).
logique.
found_posts_query
Le nombre d’éléments trouvés est calculé avec le SELECT FOUND_ROWS ()
commande en MySQL. Ce filtre vous permet de changer cette commande en autre chose, au cas où vous auriez besoin de calculer le nombre d'éléments trouvés d'une manière différente..
posts_request
Si vous souhaitez modifier la requête SQL terminée, vous devez utiliser ce filtre. Il remplace fondamentalement toute la requête SQL composée par le WP_Query
classe.
posts_résultats
Si vous voulez modifier le PHP tableau
cette WP_Query
génère avec la requête SQL, vous pouvez utiliser ce filtre. Il y a un bel exemple sur le Codex afin que vous puissiez voir comment cela fonctionne.
(Veuillez noter que ce filtre gère le brut tableau qui est généré à partir de la requête SQL.)
les_posts
contrairement à posts_résultats
, la les_posts
filter attend que le tableau soit traité en interne, ce qui signifie qu'il sera vérifié par rapport aux publications non publiées et collantes. Utilisez celui-ci si vous ne voulez pas de publications non publiées ou dans votre tableau.
SÉLECTIONNER
Clause) de la requête: posts_fields
le SÉLECTIONNER
La clause d'une requête SQL détermine les champs de la base de données qui seront sélectionnés à partir des lignes résultantes. Ce filtre vous aide à les filtrer..
LIMITE
Clause de la requête: post_limits
le LIMITE
clause d'une requête SQL définit les limites de la requête et ce filtre vous aide à la filtrer.
DISTINCT
Clause de la requête: posts_distinct
le DISTINCT
La clause d'une requête SQL stipule que la requête ne doit renvoyer que des résultats différents, et ce filtre vous aide à la filtrer. Naturellement, WP_Query
ne renvoie pas de résultats distincts, mais lorsque vous utilisez ce filtre avec une fonction qui renvoie "DISTINCT"
, la requête sera ajustée pour ne renvoyer que des résultats différents.
OÙ
Clause de la requête: posts_where
le OÙ
clause d'une requête SQL est utilisée pour filtrer MySQL SÉLECTIONNER
, INSÉRER
, METTRE À JOUR
ou EFFACER
déclarations, et ce filtre vous aide à filtrer ce filtre. Tandis que le WP_Query
classe effectue tout le travail nécessaire pour filtrer les résultats, vous pouvez aller plus loin en utilisant ce filtre.
OÙ
Clause de la requête après le calcul de la pagination: posts_where_paged
Ce filtre est une itération à la posts_where
filtre, que vous pouvez utiliser avec des requêtes de pagination.
OÙ
Clause d'une requête de recherche: posts_search
Une autre itération à la posts_where
filtre est ce filtre, que vous pouvez utiliser pour modifier la OÙ
clause d'une requête permettant d'obtenir des résultats de recherche dans WordPress.
JOINDRE
Clause de la requête: posts_join
le JOINDRE
La clause d'une requête SQL vous permet d'utiliser votre commande SQL dans plusieurs tables de base de données. Ce filtre vous aide à la filtrer. C'est l'une des parties les plus avancées de MySQL. Je vous déconseille donc d'utiliser ce filtre, à moins que vous ne sachiez très bien comment MySQL fonctionne. JOINDRE
s travail.
JOINDRE
Clause de la requête après le calcul de la pagination: posts_join_paged
Tout comme posts_where_paged
est une itération de posts_where
, c'est une itération à la posts_join
filtre qui fonctionne sur les requêtes de pagination.
COMMANDÉ PAR
Clause de la requête: posts_orderby
le COMMANDÉ PAR
La clause d'une requête SQL organise la commande de la requête, et ce filtre vous aide à filtrer la commande.
PAR GROUPE
Clause de la requête: posts_groupby
le PAR GROUPE
La clause d'une requête SQL fait en sorte que la requête retourne les résultats "groupés" par un champ de base de données. Ce filtre vous aide à filtrer le mode de regroupement des résultats..
posts_clauses
Si vous voulez traiter tous les articles en même temps, il existe également un filtre: posts_clauses
. Ce filtre couvre les OÙ
, PAR GROUPE
, JOINDRE
, COMMANDÉ PAR
, DISTINCT
, SÉLECTIONNER
, et LIMITES
clauses.
Maintenant, nous avons examiné les filtres liés à WP_Query
, Passons à l'autre type de crochets: actions.
pre_get_posts
Avant que la requête ne soit analysée, vous pouvez interagir avec celle-ci (par exemple, injecter des variables de requête supplémentaires) en utilisant cette action. Voyons un exemple rapide de Tom McFarlin pour apprendre à exclure une catégorie de la boucle principale:
set ('category__not_in', $ exclu); * / set_query_var ('category__not_in', $ exclu); add_action ('pre_get_posts', 'tutsplus_exclude_category'); ?>
parse_query
contrairement à pre_get_posts
, qui intervient avec la requête avant les variables de requête sont définies, le parse_query
action gère le processus après les variables de requête sont définies. Ainsi, vous devriez utiliser cette action si vous voulez vérifier les variables actuelles et agir en conséquence..
la poste
Le terme l'action
est un peu déroutant car c’est le nom d’un crochet d’action, un WP_Query
-fonction connexe et aussi une méthode de la WP_Query
classe.
Comme le dit le Codex, cette action nous permet de modifier l'objet post immédiatement après avoir été interrogé et configuré. En utilisant cette action, vous pouvez modifier directement la sortie. Voyons un exemple rapide:
'. __ ('EN VEDETTE', 'tutsplus'). '
Les actions et les filtres sont toujours un sujet amusant à discuter et à écrire. (Je sais pertinemment que mes deux séries sur les actions WordPress et les filtres WordPress étaient amusantes à écrire et ont suscité une vive réaction de la part de nos lecteurs.) J'espère que vous avez apprécié cette partie autant que j'ai aimé l'écrire.
Voulez-vous ajouter quelque chose à l'article? Tirez un commentaire dans la section commentaires ci-dessous. Et si vous avez aimé l'article, n'oubliez pas de le partager avec vos amis!
Rendez-vous dans la prochaine partie, où nous parlerons des propriétés et des méthodes du WP_Query
classe!