Anonim

Desglossament ràpid

  • query_posts : no s'utilitza excepte en casos escassos
  • pre_get_posts : utilitzeu si voleu modificar la consulta predeterminada d'una pàgina
  • WP_Query nou : serveix per obtenir diferents resultats de la consulta principal
  • get_posts - igual que WP_Query, només torna els resultats en format de matriu al seu lloc
  • query_posts

    No es recomana l'ús de query_posts. Hi ha maneres millors d’aconseguir el que intenteu realitzar. Voleu canviar la consulta principal? Utilitzeu l’acció pre_get_posts per filtrar els resultats (vegeu més avall). query_posts llança la consulta principal original al costat (després que ja s'hagi executat) i crea una nova consulta principal. Substitueix totes les variables globals relacionades amb la publicació i dóna lloc a una trucada completament nova a la base de dades. Simplement, no hi ha cap raó que no hagueu de modificar la consulta existent. Estic segur que hi ha casos en què s'ha d'utilitzar, però no puc pensar en cap punt de la part superior del meu cap. Utilitzeu una de les opcions a continuació, ja que probablement s'adaptaran millor.

    pre_get_posts

    Aquest és un filtre. Això modifica la consulta principal a una pàgina. Així, per exemple, volem canviar el nombre de resultats que es retornen a la pàgina principal …

function tj_change_home_number ($ query) {if (is_home ()) {$ query-> set ('posts_per_page', 2); retorn; }} add_action ("pre_get_posts", "tj_change_home_number");

Això altera la consulta principal per retornar només 2 publicacions a la pàgina principal.

WP_Query

La consulta principal sobre qualsevol plantilla que s’anomena és una instància de WP_Query . Quan interactueu amb les variables de publicació globals d'una plantilla, això és el resultat de WP_Query . Els casos d’ús d’això són nombrosos, però, tal com passa amb get_posts, decloaria una nova WP_Query amb l’objectiu de treure publicacions relacionades, alguna cosa d’aquestes línies. Tingueu en compte que si executeu la funció the_post () mentre feu un bucle a través d’una nova WP_Query, executeu la funció wp_reset_postdata () un cop heu finalitzat l’enllaç per restablir les dades de la publicació global a la consulta principal original.

get_posts

Si feu servir get_posts, en realitat truqueu a un nou WP_Query i obteniu aquesta informació en format de matriu. Usaré normalment get_posts quan torno a publicar publicacions per un control lliscant a la pàgina principal o trucar a algunes publicacions relacionades en una barra lateral. WP_Query podria utilitzar-se fàcilment, però és una bona manera de rebre una sèrie de publicacions sense modificar les variables de la publicació global. Al meu parer, és el més senzill i fàcil d’utilitzar. No hi ha trucades de funció necessàries després que es tornin les dades, només cal fer un bucle a través d'una matriu.

Això pot ser una mica confús, així que no dubteu a fer preguntes als comentaris següents.

Referència:
WP_Query
pre_get_posts
query_posts
get_posts

Wp_query vs query_posts vs get_posts vs pre_get_posts