Maîtriser WP_Query Actions et filtres

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!

Filtres liés à WP_Query

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.

Filtrage du nombre de postes trouvés pour la requête: found_posts

Ce filtre vous permet de changer le nombre d’éléments trouvés sans la limite qui vient de WP_Queryde 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.

Filtrage de la requête pour qu'elle soit exécutée afin de récupérer les messages trouvés: 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..

Filtrage de la requête SQL complète: 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.

Filtrage du tableau renvoyé par la requête: 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.)

Filtrer le tableau des messages récupérés: 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.

Filtrer la liste de champs (et le 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..

Filtrer le 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.

Filtrer le 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.

Filtrer le Clause de la requête: posts_where

le 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.

Filtrer le 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.

Filtrer le 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 clause d'une requête permettant d'obtenir des résultats de recherche dans WordPress.

Filtrer le 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. JOINDREs travail.

Filtrer le 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.

Filtrer le 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.

Filtrer le 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..

Filtrage de toutes les clauses de la requête: posts_clauses

Si vous voulez traiter tous les articles en même temps, il existe également un filtre: posts_clauses. Ce filtre couvre les , PAR GROUPE, JOINDRE, COMMANDÉ PAR, DISTINCT, SÉLECTIONNER, et LIMITES clauses.

Actions liées à WP_Query

Maintenant, nous avons examiné les filtres liés à WP_Query, Passons à l'autre type de crochets: actions.

Interférer avec la requête avant son exécution: 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'); ?>

Gérer l'analyse de la requête: 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..

Modifier l'objet de publication: 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'). '
'; add_action ('the_post', 'tutsplus_featured_badge'); ?>

Fin de la troisième partie

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!