Actualités WEB et WordPress, thèmes, plugins. Ici, nous partageons des conseils et les meilleures solutions de sites Web.

Guide : Modifier la requête globale de WordPress

41

Dans certains cas, vous devrez peut-être modifier la requête de publication globale que WordPress exécute sur n’importe quelle page que vous visitez – à la fois admin et frontend. Dans ce guide, nous verrons quel crochet utiliser et comment modifier les arguments de la requête à votre guise.

Quel crochet utiliser

Vous devez d’abord savoir à quel crochet ajouter votre code. Nous avons besoin d’un crochet qui se produit juste après que WordPress a configuré tous les arguments, mais avant que la requête réelle ne soit exécutée. Pour cela, nous utilisons l’action pre_get_posts.

Dans ce crochet, vous obtenez un paramètre ; qui est un WP_Queryobjet avec lequel WordPress exécutera plus tard la requête. Vous apportez des modifications à l’objet – mais vous n’avez pas besoin de le renvoyer car WordPress exécutera la requête avec l’objet modifié.

add_action('pre_get_posts', function($query) { // Add your code here });

La modification de la requête nécessite très probablement que vous utilisiez des balises conditionnelles pour spécifier les cas que vous souhaitez modifier. Par exemple, vous pouvez cibler la requête uniquement dans les résultats de recherche ou les vues de catégorie.

Balises conditionnelles

WordPress a un tas de balises conditionnelles que vous pouvez utiliser pour spécifier les cas dans lesquels vous souhaitez ajouter votre code. Une balise conditionnelle est simplement une fonction qui renvoie vrai ou faux en fonction de l’état dans lequel se trouve WordPress. Des exemples de balises conditionnelles courantes permettent is_admin()de vérifier si nous sommes actuellement en mode administrateur ou frontend, is_singular()si nous sommes sur une seule publication ou page en frontend, et is_search()si nous sommes à la page des résultats de recherche.

Gardez à l’esprit que le hook pre_get_postsest exécuté à la fois pour l’administrateur et le frontend. Si vous souhaitez uniquement affecter la requête globale en frontend, vous devez envelopper votre code dans un if-check sur la balise conditionnelle is_admin().

Remarque sur les balises conditionnelles danspre_get_posts

Les balises conditionnelles sont excellentes et tout, mais il y a certaines choses à garder à l’esprit lorsque vous les utilisez à l’intérieur de pre_get_posts.

Tout d’abord, vous devez vous familiariser avec la balise is_main_query(). L’action pre_get_postsest en fait exécutée plusieurs fois pour chaque chargement de page. Par exemple pre_get_postsest exécuté lors de la génération de chaque menu (y compris ceux des widgets). Afin de modifier la requête globale réelle, par exemple les publications pour une archive de catégorie ou les résultats de recherche, vous devez cibler la "requête principale" à l’aide de is_main_query().

Deuxièmement, vous devez être conscient des cas où vous devez vérifier les balises conditionnelles sur l’objet fourni au lieu d’appeler la fonction "indépendamment". Habituellement, lorsque vous utilisez des balises conditionnelles, vous l’écrivez comme ceci :

if (is_main_query()) { // Do stuff }

Cependant, lors de l’utilisation pre_get_postsde, vous devez appliquer certaines balises conditionnelles à l’objet. Par exemple:

Vous devez toujours vérifier is_main_query()l’objet fourni dans pre_get_posts. Lisez la documentation de pre_get_posts pour plus d’informations.

Ceci est un exemple de vérification si nous ne sommes pas en admin, et si nous sommes à la requête de publication principale :

Modification ou ajout d’arguments

Puisque nous travaillons avec un WP_Queryobjet, vous pouvez vous référer à la documentation de WP_Query pour savoir comment construire vos arguments pour personnaliser la requête des publications. Gardez à l’esprit que les arguments sont déjà renseignés. Dans ce cas, vous devez ajouter ou modifier les valeurs existantes. Ou supprimez ceux que vous souhaitez supprimer.

Vous utilisez la set()fonction sur l’ WP_Queryobjet pour définir des arguments. La méthode accepte deux arguments, la clé d’argument et deuxièmement la valeur. Par exemple, la définition de l’ posts_per_pageargument se ferait comme ceci :

Dans les cas où vous souhaitez ajouter ou modifier un argument préexistant, vous le ferez généralement en enregistrant d’abord l’argument existant dans une variable. Vous pouvez utiliser la méthode get()pour cela. Ensuite, vous modifiez la variable, en ajoutant ou en fusionnant des tableaux ou autres. Et enfin, vous utilisez set()pour remplacer la variable modifiée sur l’objet de requête. Je recommande d’utiliser var_dump()sur l’objet pour voir ce qu’il contient, et c’est aussi un bon moyen de vérifier si vos balises conditionnelles sont correctes.

Voici un exemple rapide d’utilisation get()(en vérifiant simplement s’il est vide), et si c’est le cas, ajoutez vos propres arguments avec set().

Remarque sur tax_query

WordPress a des sous-classes distinctes pour gérer la WP_Tax_Querypartie taxonomie () dans WP_Query. Si vous devez effectuer des modifications de requête de taxonomie plus complexes, l’ pre_get_postsaction peut être trop tôt. Certaines valeurs peuvent être vides car elles sont renseignées ultérieurement. Dans ce cas, vous feriez peut-être mieux d’utiliser l’action parse_tax_queryau lieu de pre_get_posts. Lisez la documentation de ce crochet pour voir si c’est pour vous.

Conclusion

Les arguments que vous ajoutez ou modifiez dépendent entièrement de ce que vous voulez faire, mais vous devriez maintenant avoir un aperçu des stratégies pour obtenir la requête globale. Si vous avez besoin d’avoir un aperçu de l’ WP_Queryobjet et de la façon d’utiliser ses arguments, mon article sur la façon d’interroger les publications pourrait vous intéresser.

Source d’enregistrement: awhitepixel.com

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More