Rask sammenbrudd
- query_posts - ikke bruk unntatt i sjeldne kanttilfeller
- pre_get_posts - bruk hvis du vil endre standardsøk på en side
- ny WP_Query - bruk for å få forskjellige resultater fra hovedspørringen
- get_posts - samme som WP_Query, returnerer bare resultater i matriser i stedet
query_posts
Det anbefales ikke mer å bruke query_posts. Det er bedre måter å oppnå det du prøver å oppnå. Prøver du å endre hovedspørringen? Bruk handlingen pre_get_posts for å filtrere resultatene (se nedenfor). query_posts kaster den opprinnelige hovedspørringen til siden (etter at den allerede er kjørt), og oppretter en ny hovedspørring. Den erstatter alle postrelaterte globale variabler, og resulterer i en helt ny databasesamtale. Det er rett og slett ingen grunn til at du ikke bare skal endre den eksisterende spørringen. Jeg er sikker på at det er noen kanttilfeller der det skal brukes, men jeg kan ikke tenke på noe utenfor hodet. Bruk ett av alternativene nedenfor, da de mer enn sannsynlig vil være bedre egnet.
pre_get_posts
Dette er et filter. Dette endrer hovedspørringen til en side. Så for eksempel ønsker vi å endre antall resultater som returneres på hjemmesiden …
funksjon tj_change_home_number ($ spørring) {if (is_home ()) {$ query-> set ('posts_per_page', 2); komme tilbake; }} add_action ('pre_get_posts', 'tj_change_home_number');
Dette vil endre hovedspørsmålet for bare å returnere to innlegg på hjemmesiden.
WP_Query
Hovedspørringen på en hvilken som helst mal som heter, er en forekomst av WP_Query . Når du samhandler med de globale innleggsvariablene i en mal, er det resultatet av WP_Query . Brukssakene til dette er mange, men som med get_posts, vil jeg erklære en ny WP_Query med det formål å trekke beslektede innlegg, noe i tråd med disse linjene. Bare husk at hvis du kjører the_post () -funksjonen mens du går gjennom en ny WP_Query, kjører du funksjonen wp_reset_postdata () etter at du er ferdig med å loope for å tilbakestille de globale innleggsdataene til den opprinnelige hovedspørringen.
get_posts
Ved å bruke get_posts, ringer du i realiteten et nytt WP_Query, og får den informasjonen tilbake i et matriseformat. Jeg vil vanligvis bruke get_posts når jeg returnerer innlegg for en glidebryter på hjemmesiden, eller ringer noen relaterte innlegg i en sidefelt. WP_Query kan like gjerne brukes, men det er en god måte å motta en rekke innlegg uten å endre de globale innleggsvariablene. Etter mitt syn er det den mest forenklede og enkleste å bruke. Det er ingen funksjonssamtaler nødvendig etter at dataene dine er returnert, bare sløyfing gjennom en matrise.
Dette kan være litt forvirrende, så still gjerne spørsmål i kommentarene nedenfor.
Henvisning:
WP_Query
pre_get_posts
query_posts
get_posts