Välkommen till den sista delen av serien - ja, tekniskt sett kommer den sista delen att bli "Serie Finale", men du får idén. I den här delen kommer du att lära dig om två syskonklasser som heter WP_Meta_Query
och WP_Date_Query
.
Utan ytterligare ado, låt oss börja!
De WP_Meta_Query
klassen är en "hjälparklass" som hjälper WP_Query
att göra frågor med metadata.
Som du vet lagrar WordPress tre typer metadata i databasen: posta meta, användar meta och kommentera meta. Vi såg i de tidigare handledningarna att vi kan köra meta-frågor inom de frågor vi gör med WP_Query
, WP_User_Query
och WP_Comment_Query
klasser (med 'Meta_query'
parameter). De WP_Meta_Query
körs faktiskt när du gör dessa frågor.
Visas, du kan få SQLs för dessa meta-relaterade frågor med hjälp av WP_Meta_Query
klass. Den här klassen får inte riktigt resultaten från den givna frågan, utan förbereder istället SQL-kommandona för att du ska kunna använda någon annanstans.
Vi kan inte säga att det är en handledning om vi inte gör ett exempel, eller hur? Med ett enkelt exempel ska vi se hur vi kan använda WP_Meta_Query
klass i det verkliga livet. (Beviljas, det är en extremt specifik sak att få SQL-koden för en meta-relaterad fråga, men jag försöker komma med ett verkligt exempel.)
Låt oss föreställa er att du vill skapa en särskild "relaterad inläggsplugin" för din egen webbplats, där du kommer att lista inlägg som har samma metavärde för en metatangent-eller ett annat meta värde för en annan metatangent. Och istället för att göra en meta fråga inom a WP_Query
Exempelvis vill du få SQL-koden för frågan att använda den dynamiskt i separata kodblock. Här är stegen för att förbereda den SQL-koden:
'ELLER', array ('meta_key' = '' Some_Key ',' meta_value '=>' Some_Value ',' jämför '=>' = '), array (' meta_key '=>' Some_Other_Key ',' meta_value '=> 'Some_Other_Value', 'compare' => '=')); $ my_meta_query = ny WP_Meta_Query; $ my_meta_query-> parse_query_vars ($ my_meta_query_args); $ my_meta_query_sql = $ my_meta_query-> get_sql ('post', $ wpdb-> inlägg, 'ID'); ?>
Där går du: The $ my_meta_sql
variabel lagrar SQL-koden för din speciella fråga, och du kan använda denna SQL-kod var som helst du vill inom ditt projekt.
Precis som WP_Meta_Query
, de WP_Date_Query
är en hjälparklass för WP_Query
, WP_User_Query
och WP_Comment_Query
klasser. Denna hjälparklass introducerades i WordPress version 3.7. Då stödde inte klassen WP_User_Query
, men sedan 4.1-versionen kan du fråga inuti användarbordet (the user_registered
kolumn specifikt).
Liknande WP_Meta_Query
och dess förmåga att fråga metatangenter och värden, WP_Date_Query
klassen tillåter oss att fråga datumfält i inlägg, kommentarer och användartabeller. Och precis som WP_Meta_Query
, Med hjälp av denna hjälpklass kan du också återställa den förberedda SQL-koden för att köra en datumrelaterad fråga.
För att fullt ut förstå hur WP_Date_Query
klassarbeten, låt oss gå igenom ett exempel med det. Det kommer att bli ett annat onödigt specifikt exempel, men det skulle inte vara rätt att lämna den här delen utan ett exempel.
Låt oss föreställa oss att vi av någon anledning behöver fråga om kommentarer som görs under den aktuella månaden och före middagstid. (Snälla du skjut mig en kommentar om du hittar ett bra fall för att hämta kommentarer gjorda under den aktuella månaden och före klockan!) Så här får du SQL-koden för denna bisarra fråga:
datum ('n'),) array ('före' => 'noon'), 'relation' => 'OCH'); $ my_date_query = nya WP_Date_Query ($ my_date_query_args, 'comment_date'); $ my_date_query_sql = $ my_date_query-> get_sql (); ?>
Varsågod. Tänk på att du kan använda PHP-relativa datumformat, vilket är mycket användbart.
Snabbtips: Christian Bruckner har a bra inlägg på MarketPress.com om hur WP_Date_Query
Arbetar. Det är lite föråldrat (eftersom det var skrivet innan WordPress 4.1 släpptes) men det är mycket välskrivet och fortfarande en bra läsning. Var noga med att kolla in det.
Med dessa två hjälparklasser slutar vi den långa resan att dissekera WP_Query
klass. Detta var en av de längsta handledningsserierna i Tuts + historia, så tack för att du bär med oss till slutet! I nästa (och sista) delen ska vi läsa om vad vi gick igenom förra gången och stäng serien.
Har du något att lägga till i den här artikeln? Om så är fallet, tveka inte att dela dina tankar i avsnittet Kommentarer nedan. Och om du gillade artikeln, glöm inte att dela den med dina vänner!