skip to Main Content

Quelques fonctions pour faire des requêtes sur WordPress

Divi : le thème WordPress le plus facile à utiliser

Divi : Le meilleur thème WordPress de tous les temps !

Avec plus de 600.000 téléchargements, Divi est le thème WordPress le plus populaire au monde. Il est complet, facile à utiliser et livré avec plus de 62 templates gratuits. [ Recommandé ]

Disons que vous souhaitez faire quelque chose d’unique avec la façon dont les articles sont récupérés et affichés sur une page précise de votre site web. Peut-être que vous souhaitez avoir plusieurs requêtes, une pour les articles à la une et une pour les articles récents. Ou peut-être vous souhaitez exclure certaines catégories des articles sur votre blog.

Quel que soit votre objectif, vous décidez de construire un modèle de page personnalisé avec une requête qui fait quelque chose un peu différemment. Cependant, avant de commencer à coder, vous avez une décision à prendre: quel outil de requête WordPress devriez-vous utiliser ?

WordPress propose plusieurs types de requêtes différentes: WP_query, query_posts(), get_posts(), get_pages(), et pre_get_posts. Dans de nombreux cas, vous pouvez utiliser plus d’un de ces outils pour atteindre les résultats souhaités. Cependant, la question demeure, lequel devriez-vous utiliser ?

Nous allons parler dans ce tutoriel de quelques fonctions que vous pouvez utiliser sur WordPress.

WP_Query

« WP_Query » est la classe derrière (presque) chaque requête WordPress. Lorsque vous chargez une page ou un article sur WordPress, un object « WP_query », « $query » est créé et tire les données des articles ou des pages pertinentes. En réalité, « WP_Query » que le moteur qui alimente le plus de requêtes sur WordPress.

Vous utilisez « WP_Query » sans même vous en rendre compte. Lorsque vous chargez une URL, le noyau de WordPress crée une requête vers la base de données avec la classe « WP_Query » sur la base de l’URL et les paramètres qui s’y trouvent. Donc, si vous accédez à une page avec une URL comme « http://example.com/categorie/wordpress » WordPress créera un objet « WP_Query » qui localise tous les articles dans la catégorie « WordPress » et charges tous les articles.

« WP_Query » alimente les requêtes des articles et des pages standards intégrés sur WordPress et elle peut également être utilisée pour construire des requêtes personnalisées. Cela se fait avec un peu de « programmation orientée objet ». Tout ce que vous avez à faire est de créer une nouvelle variable et de la déclarer comme une nouvelle instance de la classe « WP_Query », comme ceci:

<?php 
$args = array(
  // Define the arguments for the new query
);

$myQuery = new WP_Query( $args );

Bien sûr, alors vous devez faire quelque chose avec les résultats de la requête. Cependant, ce quelque chose est au-delà du cadre de ce tutoriel.

En tant que développeur WordPress, vous utiliserez probablement « WP_Query » plus souvent que toute autre fonction. Il est polyvalent et puissant. Alors que certains des autres requêtes traitées dans ce tutoriel peuvent vous faire économiser du temps, en général, vous ne pouvez pas vous tromper avec « WP_Query » pour vos besoins d’écriture de requêtes personnalisées.

Créez Facilement votre site Web avec Elementor

Elementor vous permet de créer facilement n'importe quel design de site Web avec un look professionnel. Arrêtez de payer cher pour ce que vous pouvez faire vous-même. [ Gratuit ]

La seule exception à cette règle est le cas où tout ce que vous devez faire est de filtrer les résultats de la requête standard. Dans ce cas, « pre_get_posts » est l’outil que vous devez utiliser. Donc, nous allons jeter un coup d’œil sur ce dernier.

pre_get_posts

« pre_get_posts » est un crochet, pas une fonction. Plutôt que d’ interroger la base de données à nouveau, « pre_get_posts » vous permet de modifier l’objet « $query » avant que la base de données ne soit interrogée, pour filtrer efficacement les résultats retournés par la requête standard.

Dans la plupart des cas, « pre_get_posts » est jumelé avec des balises conditionnelles pour filtrer les résultats de la requête dans des situations spécifiques. Par exemple, vous pouvez utiliser « pre_get_posts »pour renvoyer un nombre différent d’articles sur la page d’accueil du site. En substance, si vous voulez exécuter la requête standard, mais le modifier en quelque sorte, « pre_get_posts » sera votre outil de travail.

Il y a quelques cas dans lesquels « pre_get_posts » ne fonctionnent pas et ne doit pas être utilisé. Le WordPress Codex suggère deux de ces cas :

Le filtre « pre_get_posts » ne doit pas être utilisé pour modifier la requête sur le modèle pour une seule page car cela va interférer avec les propriétés déjà fixées par « parse_query() ».

Cherchez-vous les meilleurs thèmes et plugins WordPress ?

Téléchargez les meilleurs plugins et thèmes WordPress sur Envato et créez facilement votre site web. Déjà plus de 49.720.000 de téléchargements. [EXCLUSIF]

Le filtre « pre_get_posts » ne fonctionnera pas s’il est ajouté à un fichier de modèles tels que « archive.php », parce que ces fichiers sont chargés après que la requête principale soit déjà exécuté.

Où cela nous mène-t-il ? Cela signifie que « pre_get_posts » est un excellent choix pour modifier les requêtes de chargement des articles dans la boucle principale de la page d’accueil, la page du blog et des pages individuelles telles que « page.php » et « single.php ».

Cependant, parfois filtrer la requête standard ne suffit pas. Peut-être que vous souhaitez utiliser plusieurs requêtes de WordPress, ou manipuler les résultats d’une manière qui « pre_get_posts » ne permettra pas. Dans ce cas, vous pouvez vous diriger vers « WP_Query » ou utiliser d’autres options supplémentaires.

query_posts()

Si vous cherchez des tutoriels WordPress, vous trouverez de nombreux tutoriels recommandant l’utilisation de « query_posts() ». Cependant, les didacticiels modernes sont universellement contre cette utilisation. Voici pourquoi.

La fonction « query_posts() » remplace l’objet de la requête principale, « $query » qui est créé et utilisé par la boucle par défaut gérée par le noyau WordPress. Elle le fait en créant une nouvelle instance « WP_Query » et l’affecte à la variable globale « objet ».

Cela peut laissez penser penser que « query_posts() » est vraiment puissant et utile. Cependant, jouer avec la boucle de base signifie que « query_posts() » a des inconvénients majeurs et devrait donc être évitée .

Le Codex officielle de WordPress fournit plusieurs raisons pour lesquelles l’utilisation de « query_posts() » devrait être évitée dans la grande majorité des cas. Les principales raisons avancées sont notamment:

L’utilisation « query_posts() » peut ralentir considérablement le temps de chargement.

Etant donné que « query_posts() » remplace les données de requête standard, elle peut causer un certain nombre de problèmes avec pagination et faire des ravages sur les pages qui font usage de plusieurs requêtes.

Créez Facilement votre Boutique en ligne

Téléchargez gratuitement WooCommerce, le meilleurs plugins e-commerce pour vendre vos produits physiques et numériques sur WordPress. [Recommandé]

En bref, l’utilisation de « query_posts() » est une proposition dangereuse. En fait, la documentation officielle ouvre avec la mise en garde: Cette fonction remplacera complètement la requête principale et n’est pas destinés à être utilisés par des plugins ou des thèmes. Son approche trop simpliste pour modifier la requête principale peut être problématique et doit être évitée autant que possible.

En d’autres termes, si vous codez un thème ou un plugin, ce qui est exactement ce que la grande majorité d’entre nous sommes en train de faire, vous devez éviter l’utilisation de « query_posts() ». Au lieu de cela, créez un tout nouveau object « WP_Query » ou utilisez « get_posts() », « get_pages() » ou à la « pre_get_posts ».

Ce n’est certainement pas tout, il y a d’autres fonctions que nous envisagerons dans un prochain tutoriel. D’ici là, je vous souhaite un bon codage.

Cet article comporte 0 commentaires

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

Back To Top
5 Partages
Partagez2
Tweetez
Enregistrer3