Hej och välkommen till den andra delen av serien "Mastering WP_Query". I första delen började vi med serien genom att helt enkelt introducera vad WP_Query
klassen är. Och i den här andra delen kommer vi att lära oss om de funktioner som är relaterade till WP_Query
.
Låt oss börja!
Jag är ingen expert på programmering, men jag kan se att WP_Query
klassen är ett av de bästa exemplen på MVC-mönstret. Det är extremt kraftfullt, helt utdragbart och mycket lätt att använda när du läser grunderna.
Förutom dess egenskaper, metoder och parametrar (som vi ska gå igenom i framtiden), erbjuder WordPress extrafunktioner och krokar (vilket betyder åtgärder och filter) för att arbeta med WP_Query
klass. I denna handledning kommer vi lära känna funktionerna och i nästa del ser vi åtgärder och filter relaterade till WP_Query
. Om du ser att jag har glömt något, var snäll att meddela mig genom att skicka en kommentar.
Det finns 13 WordPress-funktioner som fungerar med WP_Query
klass som kan hjälpa dig att utnyttja kraften i WP_Query
. De behöver inte någon introduktion, så här går vi:
get_query_var ()
Vår första funktionens namn talar för sig själv, verkligen: Det tar det globala $ wp_query
objekt och hämtar en allmän variabel förfrågan från den. Den har två parametrar: Den första är variabeln för att returnera sitt värde och den andra är ett standardvärde att returnera om variabeln inte är inställd:
query_posts ()
För att vara ärlig är det här en dålig fungera. Du behöver verkligen inte använda det, men för att säga "rätt väg" kommer vi att gå över det och berätta att det är "fel väg".
query_posts ()
är en funktion som ändrar huvudfrågan genom att lägga huvudfrågan åt sidan och köra en ny fråga - och du måste använda wp_reset_query ()
att städa upp efter det.
Denna funktion är en av de mest missbrukade funktioner i kärnan i WordPress. Du bör inte använda den för att skapa sekundära frågor - du kan använda WP_Query
klass eller get_posts ()
funktion (som vi kommer att prata om senare i denna handledning). Du bör inte använda den för att ändra huvudfrågan heller, du borde använda pre_get_posts
åtgärd (som vi kommer att prata om senare också). Även Codex avskyr oss från att använda det och visar alternativ.
Bottom line: Använd inte den.
get_post ()
En annan självförklarande funktion är get_post ()
, som du använder för att få ett enda inlägg. Den har tre valfria parametrar:
OBJEKT
, ARRAY_A
(en associativ array) eller ARRAY_N
(en numerisk array).'rå'
så det filtreras inte om du inte ställer in det 'redigera'
, 'visa'
, 'attribut'
eller 'Js'
.get_posts ()
De get_posts ()
funktionen tillåter oss att springa frågor och spara dem som arrays att använda på olika ställen. Det kräver samma argument med WP_Query
så du kan anpassa frågan som du vill. (Vi får läsa om WP_Query
parametrar i framtiden, så håll dig stillad!) Det är det bästa och mest effektiva sättet att skapa postlistor men inte loopar.
'nyheter', 'order' => 'ASC', 'orderby' => 'post_title', 'posts_per_page' => -1); // Återgå en uppsättning av alla inlägg i kategorin "nyheter". $ all_posts_list = get_posts ($ args); ?>
Även om denna funktion kan användas för att köra "sekundära frågor" utan problem, rekommenderar Codex att använda WP_Query
när du skapar flera loopar och använder get_posts ()
när man hämtar en postlista. Peter R. Knight förklarar skillnaden mellan get_posts ()
och WP_Query
i enkla termer: Den största skillnaden är det WP_Query
gör fler databasfrågor (postdata, metadata, författardata och kommentardata) medan get_posts ()
gör bara en fråga (postdata).
get_pages ()
Detta udda funktionen syftar till att hämta en lista med sidor, även om den har en post_type
parameter som också kan låta dig välja en annan posttyp (förutsatt att posttypen är hierarkisk, annars returnerar den falsk
).
'ASC', 'sort_column' => 'post_title', 'hierarchical' => 1, 'exclude' => ", 'inkludera' =>", 'meta_key' => ", 'meta_value' =>", "författare '=> ",' child_of '=> 0,' parent' => -1, 'exclude_tree' =>", 'nummer' => ", 'offset' => 0, 'post_type' => 'sida' 'post_status' => 'publicera'); $ pages = get_pages ($ args);?>
Den accepterar argument som mycket liknar WP_Query
s argument, men de är lite annorlunda:
sorteringsordning
: Om du vill sortera sidorna i en stigande (asc
) eller nedåtgående (desc
) ordning.sort_column
: Så här sorterar du sidorna. accepterar Post titel
, menu_order
, post_date
, post_modified
, ID
, post_author
, och POST_NAME
.hierarkisk
: Om du vill lista sidor hierarkiskt (1
) eller inte (0
).utesluta
: En kommaseparerad lista eller en rad sididentifikatorer som ska uteslutas från listan.inkludera
: En kommaseparerad lista eller en rad sididentifikatorer som ska inkluderas i listan och utesluta allt annat.meta_key
: När den används med meta_value
argument, det innehåller bara sidor som har den definierade metatangenten och värdet.meta_value
: När den används med meta_key
argument, det innehåller bara sidor som har den definierade metatangenten och värdet.författarna
: En kommaseparerad lista över författar-ID.Barn till
: Ett ID för en sida för att hämta endast sina barn och barnbarn i noteringen.förälder
: Lista de sidor som har det angivna sid-id som förälder. För att detta argument ska kunna fungera, hierarkisk
argument måste vara inställt på 0
.exclude_tree
: En kommaseparerad lista eller en rad sididentifikatorer för att utesluta med sina barn.siffra
: Antal sidor att hämta.offset
: Antal sidor som ska hoppa överst.post_type
: Posttypen för att fråga. Naturligtvis är det som standard sida
.post_status
: En kommaseparerad lista över posttypstyper som ska inkluderas.have_posts ()
Utan att acceptera några parametrar returnerar den här funktionen helt enkelt SANN
om frågan returnerar några poster och FALSK
om inte.
stolpen()
Codex säger att det "iterates postindex i Loop". Det gör flera saker:
$ post
data.i slingan
parameter till SANN
.$ post
: setup_postdata ()
Denna funktion talar också för sig själv: Den sätter upp de globala postdata. Låt oss se vad Codex säger om den här:
setup_postdata () fyller de globala variablerna
$ id, $ authordata, $ currentday, $ currentmonth, $ page, $ sidor, $ multipage, $ more, $ nummrar
, som hjälper många mall-taggar att fungera i det aktuella inlägget. Det tilldelar inte den globala$ post
variabel men verkar förvänta sig att dess argument är en referens till det.
rewind_posts ()
Ännu en funktion vars namn anger sin funktionalitet: Den här funktionen "återvinner" Loop så att du kan köra den igen senare.
$ post
: wp_reset_postdata ()
Den här funktionen återställer den globala $ post
Variabel tillbaka till det första inlägget i huvudfrågan. Det är bättre att använda den här efter en sekundär fråga.
wp_reset_query ()
Den här ska användas om huvudfrågan ändras (med query_posts ()
funktion eller pre_get_posts
åtgärd som vi ser i nästa del) så att huvudfrågan kan återställas.
is_main_query ()
Den här är en villkorlig etikett som returnerar SANN
om den aktuella frågan är huvudfrågan och FALSK
om det inte är det. Enkelt, rätt?
i slingan()
En annan villkorlig tagg är i slingan()
som bara återvänder SANN
eller FALSK
om din kod körs inuti Loop eller inte.
Där går du - nu vet du (förmodligen) alla funktioner relaterade till WP_Query
! Håll dig klar för nästa del där vi lär dig mer om WP_Query
relaterade åtgärder och filter.
Har du några kommentarer eller något att lägga till i den här delen? Gärna dela dina tankar genom att kommentera nedan. Och om du gillade artikeln, glöm inte att dela den med dina vänner!