Ventilation rapide
- query_posts - ne pas utiliser sauf dans de rares cas de bords
- pre_get_posts - à utiliser si vous souhaitez modifier la requête par défaut sur une page
- new WP_Query - permet d’obtenir des résultats différents de la requête principale
- get_posts - identique à WP_Query, renvoie simplement les résultats sous forme de tableau
query_posts
L'utilisation de query_posts n'est plus recommandée. Il y a de meilleures façons d'accomplir ce que vous essayez d'accomplir. Vous essayez de modifier la requête principale? Utilisez l'action pre_get_posts pour filtrer les résultats (voir ci-dessous). query_posts jette la requête principale d'origine sur le côté (après son exécution) et crée une nouvelle requête principale. Il remplace toutes les variables globales liées à la publication et donne lieu à un tout nouvel appel à la base de données. Il n'y a tout simplement aucune raison pour que vous ne modifiiez pas simplement la requête existante. Je suis sûr que dans certains cas, il devrait être utilisé, mais je ne peux en penser à personne. Utilisez l’une des options ci-dessous, car elles seront probablement mieux adaptées.
pre_get_posts
Ceci est un filtre. Cela modifie la requête principale vers une page. Ainsi, par exemple, nous souhaitons modifier le nombre de résultats renvoyés sur la page d'accueil…
fonction tj_change_home_number ($ query) {if (is_home ()) {$ query-> set ('posts_per_page', 2); revenir; }} add_action ('pre_get_posts', 'tj_change_home_number');
Cela modifierait la requête principale pour ne renvoyer que 2 publications sur la page d'accueil.
WP_Query
La requête principale sur tout modèle appelé est une instance de WP_Query . Lorsque vous interagissez avec les variables de publication globales dans un modèle, c'est le résultat de WP_Query . Les cas d'utilisation de ceci sont nombreux, mais comme avec get_posts, je déclarerais un nouveau WP_Query dans le but de tirer des messages liés, quelque chose du genre . N'oubliez pas que si vous exécutez la fonction the_post () lors d'une boucle sur un nouveau WP_Query, exécutez la fonction wp_reset_postdata () après avoir bouclé la boucle pour réinitialiser les données de publication globales sur la requête principale d'origine.
get_posts
En utilisant get_posts, vous appelez un nouveau WP_Query et vous obtenez cette information dans un format de tableau. J'utilise généralement get_posts lorsque je renvoie des messages pour un curseur sur la page d'accueil ou que j'appelle des messages connexes dans un encadré. WP_Query pourrait tout aussi bien être utilisé, mais c’est un bon moyen de recevoir un tableau de posts sans modifier les variables de posts globales. À mon avis, c'est le plus simpliste et le plus facile à utiliser. Il n’ya pas d’appel de fonction nécessaire après le retour de vos données, il vous suffit de parcourir en boucle un tableau.
Cela peut être un peu déroutant, alors n'hésitez pas à poser des questions dans les commentaires ci-dessous.
Référence:
WP_Query
pre_get_posts
query_posts
get_posts