Hei og velkommen til den andre delen av serien, kalt "Mastering WP_Query". I første del begynte vi med serien ved ganske enkelt å introdusere hva WP_Query
klassen er. Og i denne andre delen skal vi lære om funksjonene knyttet til WP_Query
.
La oss begynne!
Jeg er ikke en ekspert på programmering, men jeg kan se at WP_Query
Klassen er et av de beste eksemplene på MVC-mønsteret. Det er ekstremt kraftig, helt utvidbart, og veldig lett å bruke når du blir kjent med det grunnleggende.
I tillegg til sine egenskaper, metoder og parametere (som vi skal gjennomgå i fremtiden), tilbyr WordPress ekstra funksjoner og kroker (som betyr handlinger og filtre) for å jobbe med WP_Query
klasse. I denne opplæringen kommer vi til å bli kjent med funksjonene, og i neste del ser vi handlinger og filtre relatert til WP_Query
. Hvis du ser at jeg har glemt noe, vær så snill å gi beskjed ved å ta en kommentar.
Det er 13 WordPress-funksjoner som fungerer med WP_Query
klasse som kan hjelpe deg å utnytte kraften til WP_Query
. De trenger ingen introduksjon, så her går vi:
get_query_var ()
Vår første funksjon s navn taler for seg selv, virkelig: Det tar det globale $ wp_query
objekt og henter en offentlig spørringsvariabel fra den. Den har to parametere: Den første er variabelen for å returnere verdien, og den andre er en standardverdi som skal returneres hvis variabelen ikke er angitt:
query_posts ()
For å være ærlig, er dette en dårlig funksjon. Du trenger ikke å bruke det i det hele tatt, men for å fortelle "den riktige veien", vi kommer til å gå over det og fortelle deg at det er "feil vei".
query_posts ()
er en funksjon som endrer hovedspørsmålet ved å sette hovednavnet til side og kjøre en ny spørring - og du må bruke wp_reset_query ()
å rydde opp etter det.
Denne funksjonen er en av de mest misbrukt Fungerer i kjernen av WordPress. Du bør ikke bruke den til å lage sekundære spørringer - du kan bruke WP_Query
klasse eller get_posts ()
funksjon (som vi snakker om senere i denne opplæringen). Du bør ikke bruke den til å endre hovednavnet heller - du bør bruke pre_get_posts
handling (som vi snakker om senere også). Selv Codex fraråder oss fra å bruke det og viser alternativer.
Bunnlinjen: Ikke bruk den.
get_post ()
En annen selvforklarende funksjon er get_post ()
, som du bruker til å få et enkelt innlegg. Den har tre valgfrie parametere:
GJENSTAND
, ARRAY_A
(en assosiativ array) eller ARRAY_N
(en numerisk rekkefølge).'rå'
så det blir ikke filtrert med mindre du setter det til 'redigere'
, 'vise'
, 'Egenskap'
eller 'Js'
.get_posts ()
De get_posts ()
funksjonen tillater oss å kjøre spørringer og lagre dem som arrays for bruk på forskjellige steder. Det krever de samme argumentene med WP_Query
slik at du kan tilpasse spørringen som du vil. (Vi kommer til å se gjennom WP_Query
parametere i fremtiden, så hold deg innstilt!) Det er den beste og mest effektive måten å lage postlister på, men ikke looper.
'news', 'order' => 'ASC', 'orderby' => 'post_title', 'posts_per_page' => -1); // Returner en rekke av alle innlegg i kategorien "nyheter". $ all_posts_list = get_posts ($ args); ?>
Selv om denne funksjonen kan brukes til å kjøre "sekundære søk" uten problem, anbefaler Codex å bruke WP_Query
når du lager flere løkker og bruker get_posts ()
når du henter en postliste. Peter R. Knight forklarer forskjellen mellom get_posts ()
og WP_Query
Enkelt sagt: Hovedforskjellen er det WP_Query
gjør flere databasespørsmål (postdata, metadata, forfatterdata og kommentardata) mens get_posts ()
gjør bare ett spørsmål (postdata).
get_pages ()
Dette merkelig funksjonen har til formål å hente en liste over sider, selv om den har en post_type
parameter som også lar deg velge en annen posttype (forutsatt at posttypen er hierarkisk, ellers returnerer den falsk
).
'ASC', 'sort_column' => 'post_title', 'hierarkisk' => 1, 'ekskluder' => ", 'inkluderer' =>", 'meta_key' => ", 'meta_value' =>", "forfattere '=> ",' child_of '=> 0,' foreldre '=> -1,' exclude_tree '=>",' tall '=> ",' offset '=> 0,' post_type '=>' side ' 'post_status' => 'publiser'); $ sider = get_pages ($ args);?>
Den aksepterer argumenter som ligner på WP_Query
s argumenter, men de er litt forskjellige:
sorteringsrekkefølge
: Om du vil sortere sidene i en stigende (ASC
) eller synkende (desc
) rekkefølge.sort_column
: Slik sorterer du sidene. godtar POST_TITLE
, menu_order
, post dato
, post_modified
, ID
, post_author
, og POST_NAME
.hierarkisk
: Enten å liste sider hierarkisk (1
) eller ikke (0
).utelukke
: En kommaseparert liste eller en rekke side-IDer for å ekskludere fra oppføringen.inkludere
: En kommaseparert liste eller en rekke side IDer som skal inkluderes fra oppføringen og ekskludere alt annet.meta_key
: Når den brukes sammen med meta_value
argument, det inkluderer bare sider som har den definerte metatasten og verdien.meta_value
: Når den brukes sammen med meta_key
argument, det inkluderer bare sider som har den definerte metatasten og verdien.forfattere
: En kommaseparert liste over forfatter-IDer.barn av
: En ID for en side for å hente bare sine barn og barnebarn i noteringen.forelder
: Oppgi sidene som har den angitte siden ID som foreldre. For at dette argumentet skal fungere, skal hierarkisk
argumentet må settes til 0
.exclude_tree
: En kommaseparert liste eller en rekke side-IDer for å ekskludere med sine barn.Nummer
: Antall sider for å hente.offset
: Antall sider å hoppe over fra toppen.post_type
: Posttype for å spørre. Naturligvis er det som standard side
.post_status
: En kommaseparert liste over innleggsstatustyper som skal inkluderes.have_posts ()
Uten å akseptere noen parametere, returnerer denne funksjonen bare EKTE
hvis spørringen returnerer noen poster og FALSK
Hvis ikke.
posten()
Codex sier at det "iterates postindeksen i Loop". Det gjør flere ting:
$ post
data.i Løkken
parameter til EKTE
.$ post
: setup_postdata ()
Denne funksjonen taler også for seg selv: Den oppretter de globale postdataene. La oss se hva Codex sier om denne:
setup_postdata () fyller de globale variablene
$ id, $ authordata, $ dagens dag, $ currentmonth, $ side, $ sider, $ multipage, $ more, $ numpages
, som hjelper mange malemerker i den nåværende postkonteksten. Det tilordner ikke det globale$ post
variabel, men synes å forvente at dens argument er en referanse til det.
rewind_posts ()
En annen funksjon som heter dets funksjonalitet: Denne funksjonen "rewinds" Loop slik at du kan kjøre den igjen senere.
$ post
: wp_reset_postdata ()
Denne funksjonen nullstiller den globale $ post
Variabel tilbake til det første innlegget i hovedspørsmålet. Det er bedre å bruke denne etter et sekundært søk.
wp_reset_query ()
Denne skal brukes hvis hovednavnet endres (med query_posts ()
funksjon eller pre_get_posts
handling som vi ser i neste del) slik at hovednavnet kan tilbakestilles.
is_main_query ()
Denne er et betinget tag som returnerer EKTE
hvis den nåværende spørringen er hovedspørsmålet og FALSK
hvis det ikke er det. Enkel, rett?
i Løkken()
Et annet betinget tag er i Løkken()
som bare returnerer EKTE
eller FALSK
Hvis koden din kjører inne i Loop eller ikke.
Der går du - nå vet du (sannsynligvis) alle funksjonene knyttet til WP_Query
! Hold deg oppdatert på neste del der vi skal lære om WP_Query
relaterte handlinger og filtre.
Har du kommentarer eller noe å legge til i denne delen? Du er velkommen til å dele dine tanker ved å kommentere nedenfor. Og hvis du likte artikkelen, ikke glem å dele den med vennene dine!