Hurtig sammenbrud
- query_posts - må ikke bruges undtagen i sjældne kanttilfælde
- pre_get_posts - brug hvis du vil ændre standardforespørgslen på en side
- nyt WP_Query - bruges til at få forskellige resultater fra hovedforespørgslen
- get_posts - samme som WP_Query, returnerer bare resultater i arrayformat i stedet
query_posts
Brug af query_posts anbefales ikke mere. Der er bedre måder at udføre, hvad du prøver at opnå. Forsøger du at ændre hovedforespørgslen? Brug handlingen pre_get_posts til at filtrere resultaterne (se nedenfor). query_posts kaster den originale hovedforespørgsel til siden (efter at den allerede er blevet kørt) og opretter en ny hovedforespørgsel. Det erstatter alle postrelaterede globale variabler og resulterer i et helt nyt databasekald. Der er simpelthen ingen grund til, at du ikke bare skal ændre den eksisterende forespørgsel. Jeg er sikker på, at der er nogle kanttilfælde, hvor det skal bruges, men jeg kan ikke tænke på noget fra toppen af mit hoved. Brug en af nedenstående indstillinger, da de mere end sandsynligvis vil være bedre egnet.
pre_get_posts
Dette er et filter. Dette ændrer hovedforespørgslen til en side. Så for eksempel vil vi ændre antallet af resultater, der returneres på hjemmesiden …
funktion tj_change_home_number ($ forespørgsel) {if (is_home ()) {$ query-> set ('posts_per_page', 2); Vend tilbage; }} add_action ('pre_get_posts', 'tj_change_home_number');
Dette vil ændre hovedforespørgslen for kun at returnere 2 indlæg på startsiden.
WP_Query
Den vigtigste forespørgsel på enhver skabelon, der kaldes, er en forekomst af WP_Query . Når du interagerer med de globale indlægsvariabler inden for en skabelon, er det resultatet af WP_Query . Brugssagerne til dette er adskillige, men som med get_posts ville jeg erklære en ny WP_Query med det formål at trække relaterede stillinger, noget i retning af disse linjer. Bare husk, at hvis du kører funktionen_post (), mens du looper gennem en ny WP_Query, skal du køre funktionen wp_reset_postdata (), når du er færdig med at loope for at nulstille de globale postdata til den oprindelige hovedforespørgsel.
get_posts
Ved at bruge get_posts kaldes du i virkeligheden et nyt WP_Query og får disse oplysninger tilbage i et array-format. Jeg vil typisk bruge get_posts, når jeg returnerer indlæg til en skyder på hjemmesiden eller kalder nogle relaterede indlæg i en sidebjælke. WP_Query kunne lige så let bruges, men det er en god måde at modtage en række poster uden at ændre de globale indlægsvariabler. Efter min mening er det den mest forenklede og nemmeste at bruge. Der er ingen funktionsopkald nødvendige, efter at dine data er returneret, bare looping gennem en matrix.
Dette kan være lidt forvirrende, så spørg gerne spørgsmål i kommentarerne herunder.
Reference:
WP_Query
pre_get_posts
query_posts
get_posts
