I den här serien har vi tittat på hur WordPress kan användas för att utveckla webbapplikationer, ungefär som ett antal olika ramar och andra verktyg som är tillgängliga.
Med början i den senaste artikeln började vi titta på de olika alternativen vi har när det gäller att fråga om WordPress-data. Först granskade vi WP_Query
.
I den här artikeln ska vi fortsätta titta på de tillgängliga alternativen för att hämta information från databasen genom att titta på WP_User_Query
varefter vi kommer att uppmärksamma oss på hur vi kan köra direkta SQL-frågor mot databasen.
Men för nu, låt oss ta en titt på vad WordPress erbjuder oss i sättet att hantera våra användare, deras information och deras relaterade metadata.
Innan vi börjar diskutera det aktuella API-systemet, låt oss snabbt granska några av informationen om WordPress-databasen så att vi har ställt en gemensam nivå av information för att fungera för resten av artikeln, API och de exempel vi " Jag kommer att täcka.
I den senaste artikeln nämnde vi tre specifika punkter:
När vi täckte WP_Query
, Vi granskade hur det kan användas för att hämta inlägg, sidor, anpassade posttyper, relaterade taxonomier, kategorier, villkor och så vidare.
Liknande, WP_User_Query
erbjuder mycket av samma funktionalitet men inom användarnas sammanhang. Codex definierar frågan:
WP_User_Query är en klass, ..., som tillåter att fråga WordPress databas tabeller "wp_users" och "wp_usermeta".
Till skillnad från den första definitionen av WP_Query
, Detta är mindre tekniskt och relativt lätt att förstå speciellt om du är bekant med wp_users
bord och wp_usermetadata
tabeller.
Men om du inte är det, inte så mycket: Vi kommer att täcka allt som behövs, inte bara för att förstå tabellerna, utan också för att förstå API: n.
De wp_users
bord och wp_usermetadata
Tabellerna ansvarar för att lagra användardata.
Informationen för var och en av tabellerna finns i Codex (som du hittar här och här), och jag rekommenderar att alla granskar det; Informationen om varje tabell kan emellertid förenklas enligt följande:
För att se detta i åtgärd kan du ta en titt på vilken WordPress-databasinformation som helst, och du kommer att upptäcka att det här är information som Förnamn, Efternamn, Förmåga, och så vidare.
Det fina är att om du bygger en applikation, ger metabordet mycket flexibilitet om hur mycket information du verkligen kan associera med någon av dina användare.
Först noterar du att konfigurera en användarfråga är ungefär som att ställa in en WP_Query
. Därmed menar jag att du tar tag i en förekomst av klassen genom att ge en rad argument till konstruktören.
När det gäller argumenten, kan allt som anges i de associerade databastabellerna specificeras. Du kan till exempel söka med:
Men det är mer än det. Du kan också ange parametrar som är relaterade till metadata så att du kan fråga för olika användare, säg baserat på deras roll och en samling användares metainformation.
Vi tar en titt på det här lite mer i detalj, men det är också värt att notera att du kan konstruera ännu mer avancerade frågor som handlar om att inkludera användar metadata, exklusive metadata för användare, hur och vill beställa data (säg av stigande användarnamn), och till och med paginationsparametrar så att vi enkelt kan bläddra igenom användarrekord.
Naturligtvis, hur bra är det att prata om ett API utan att faktiskt titta på hur man använder det? I det följande exemplet kommer vi att ta ett exempel på användarkonton och sedan iterera på frågan tills vi har konstruerat en som försöker visa en mängd olika funktioner som den tillhandahåller.
Med det sagt, låt oss säga att vi vill uppnå följande:
Så, låt oss börja. Kom ihåg att vi ska bygga denna fråge linje efter rad, så det borde vara relativt lätt att förstå som det fortsätter att utvecklas.
Om du vid något tillfälle har frågor om vad som händer är du välkommen att släppa dem i kommentarerna.
Först vill vi ange att vi vill inkludera alla administratörer:
$ args = array ('role' => 'Administrator'); $ user_query = nya WP_User_Query ($ args);
Därefter vill vi se till att de har sitt förnamn och senast angivna. Eftersom den informationen lagras i metatatabellen måste vi använda användarparametrar för meta-frågan.
Specifikt kommer vi att be om att hämta alla administratörer som har ett förnamn som anges (eller snarare det är inte tomt).
$ args = array ('role' => 'Administratör', 'meta_query' => array ('meta_key' => 'first_name', 'meta_value' => "meta_compare '=>'! = ')); $ user_query = ny WP_User_Query ($ args);
Därefter kommer vi att beställa resultaten av administratörens registreringsdatum i stigande ordning:
$ args = array ('role' => 'Administrator', 'meta_query' => array ('meta_key' => 'first_name', 'meta_value' => "meta_compare '=>'! = ')' orderby '=> 'registered', 'order' => 'ASC'); $ user_query = nytt WP_User_Query ($ args);
Och slutligen säger vi att vi vill dra tillbaka fem poster i taget:
// Antalet poster som ska visas på en sida $ display_count = 5; // Vi måste hämta numret på den aktuella sidan vi är på. // Det här är användbart för att beräkna rätt offset $ page = get_query_var ('paged')? get_query_var ('paged'): 1; // Efter det beräknar du offset $ offset = ($ page - 1) * $ display_count; $ args = array ('role' => 'Administrator', 'meta_query' => array ('meta_key' => 'first_name', 'meta_value' => "meta_compare '=>'! = ')' orderby '=> 'registered', 'order' => 'ASC', 'number' => $ display_count 'offset' => $ offset); $ user_query = nytt WP_User_Query ($ args);
Och vi är klara. Nu handlar det om att iterera genom frågan för att kunna producera våra resultat. Tyvärr kan vi alla ha en annorlunda tanke på hur vi vill göra det här, så notera att slingan som jag visar är bara ett exempel (versus de exempel):
// Om det finns resultat baserat på våra kriterier ... $ results = "; om (! Tomt ($ user_query-> resultat)) // För varje resultat, låt oss visa administratörens namn foreach ($ user_query-> resultat som $ användare) $ results. = 'Displaynamnet är:'. $ user-> display_name; $ results. = '
'; $ results. = get_user_meta ($ user-> ID, 'first_name', true); $ resultat. = '
'; // Visa informationen på skärmen. echo $ resultat;
Och notera: En skillnad från WP_User_Query
mot WP_Query
är att det inte finns något behov av att återställa någon form av postdata eftersom vi inte arbetar med något annat än en fristående slinga.
Vid denna tidpunkt uppstår uppdraget naturligt av när är en bra idé att använda WP_User_Query
, och du kommer sannolikt att få olika svar från olika personer, som vissa förhandsgranskningar för att använda andra metoder för att hämta informationen.
Men i allmänhet, om jag ska hämta information från databasen som handlar direkt och strikt med användare, då använder jag WP_User_Query
.
Nu, eftersom resultatuppsättningen kan returneras på ett sätt som tekniskt kan sammanfogas, eller åtminstone omarbetas med en annan uppsättning data, så är det definitivt möjligt att göra detta, Men jag tror personligen att detta kräver lite erfarenhet som kanske inte passar räkningen för alla.
Med andra ord, gärna använda det som du vill, men behandla det med försiktighet.
Så med WP_Query
och WP_User_Query
bakom oss har vi ett ytterligare API där vi kan titta för att runda ut vår diskussion, och det är möjligheten att direkt fråga WordPress-databasen.
I den slutliga artikeln som behandlar frågor, tar vi en titt på detta API, avslutar vår diskussion och leder sedan in i den slutliga översynen av allt vi har täckt i hela serien.