Använda WordPress för webbapplikationsutveckling WP_User_Query

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.

Fråga databasen: En uppdatering

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:

  1. Att söka i WordPress-databasen hänvisar till åtgärden att hämta information från databasen (som det är fallet med övriga databasbaserade webbapplikationer).
  2. Det finns ett antal sätt att fråga databasen - varav vissa är mer korrekta än andra i vissa situationer - och vi måste förstå vilka sätt som låter sig ge den bästa situationen.
  3. Det är viktigt att förstå API: erna så att vi vet vad som är tillgängligt för oss, vilka fördelar som erbjuds, och vilka situationer passar bäst för ett givet API.

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.

Presenterar WP_User_Query

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.

Så här använder du WP_User_Query

De wp_users bord och wp_usermetadata Tabellerna ansvarar för att lagra användardata.

Tabellschemat

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:

  • De användare tabellen behåller listan över användare i systemet och den minsta mängd information som ger användaren tillgång till WordPress. Detta inkluderar det automatiskt tilldelade IDet, deras inloggning, lösenord, hur man visar sitt namn, deras e-postadress, när de registrerade, deras status och webbadressen till deras webbplats (om de anges).
  • De usermeta bordet används för att lagra mer generisk information genom enkla nyckel- / värdepar. Det vill säga att, precis som med postdata, kan vi associera information med användare som använder sina ID, metatangenter och meta-värden.

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.

Användar WP_User_Query

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:

  • användarrollen,
  • strängmatcher på kolumner (t.ex. ID, inloggning, URL, etc.),
  • e-postadress,
  • och så vidare.

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.

Ett praktiskt exempel

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:

  • hämta alla administratörer,
  • vem har ett förnamn specificerat,
  • beställt av deras registreringsdatum i stigande ordning,
  • och paginera så att vi bara hämtar ett antal användare per sida

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.

När ska du använda WP_User_Query

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.

Nästa Upp, Direktfrågor mot databasen

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.