Folosind WordPress pentru dezvoltarea aplicațiilor web WP_User_Query

În această serie am analizat modul în care WordPress poate fi folosit pentru a dezvolta aplicații web mult ca un număr de cadre diferite și alte instrumente disponibile.

Începând din ultimul articol, am început să ne uităm la diferitele opțiuni pe care le avem în legătură cu interogarea datelor WordPress. În primul rând, am revizuit WP_Query.

În acest articol, vom continua să ne uităm la opțiunile disponibile pentru extragerea informațiilor din baza de date prin vizualizarea WP_User_Query după care ne vom îndrepta atenția asupra modului în care putem rula interogări directe SQL în baza de date.

Dar, pentru moment, să aruncăm o privire la ceea ce ne oferă WordPress în ceea ce privește gestionarea utilizatorilor, a informațiilor acestora și a meta datelor asociate acestora.

Solicitarea unei baze de date: o actualizare

Înainte de a intra în discutarea actualului API, să examinăm rapid unele informații despre baza de date WordPress, astfel încât să stabilim un nivel comun de informații de pe care să lucrăm pentru restul articolului, API, voi acoperi.

În ultimul articol, am menționat trei puncte specifice:

  1. Interogarea bazei de date WordPress se referă la actul de preluare a informațiilor din baza de date (ca în cazul celorlalte aplicații web bazate pe baze de date).
  2. Există o serie de modalități de interogare a bazei de date - dintre care unele sunt mai corecte decât altele în unele situații - și trebuie să înțelegem care sunt modalitățile care se pretează la cea mai bună situație.
  3. Este important să înțelegeți API-urile astfel încât să știm ce ne este disponibil, ce beneficii oferă fiecare și care sunt cele mai potrivite situații pentru un anumit API.

Când ne-am acoperit WP_Query, am analizat modul în care pot fi utilizate pentru a prelua postări, pagini, tipuri personalizate de postări, taxonomii asociate, categorii, termeni și așa mai departe.

Introducerea WP_User_Query

asemănător, WP_User_Query oferă o mare parte din aceeași funcționalitate, dar în contextul utilizatorilor. Codul definește interogarea:

WP_User_Query este o clasă, ..., care permite interogarea tabelelor de baze de date WordPress 'wp_users' și 'wp_usermeta'.

Spre deosebire de definiția inițială a WP_Query, acest lucru este mai puțin tehnic și relativ ușor de înțeles mai ales dacă sunteți familiarizat cu wp_users tabelul și wp_usermetadata Mese.

Dar dacă nu sunteți, nu faceți mare lucru: vom acoperi tot ceea ce este necesar nu numai pentru a înțelege tabelele, ci și pentru a înțelege API-ul.

Cum se utilizează WP_User_Query

wp_users tabelul și wp_usermetadata tabelele sunt responsabile pentru stocarea datelor de utilizator.

Schema de tabel

Informațiile pentru fiecare tabelă sunt disponibile în Codul (pe care îl puteți găsi aici și aici) și vă recomand că toată lumea să o revizuiască; cu toate acestea, informațiile despre fiecare tabel pot fi simplificate după cum urmează:

  •  utilizatori tabelul menține lista utilizatorilor din sistem și cantitatea minimă de informații pentru a oferi utilizatorilor acces la WordPress. Acestea includ ID-ul atribuit automat, numele lor de conectare, parola, cum se afișează numele lor, adresa lor de e-mail, când s-au înregistrat, statutul acestora și adresa URL la site-ul lor (dacă este specificat).
  •  usermeta tabelul este utilizat pentru a stoca mai multe informații generice prin perechi simple de chei / valoare. Aceasta înseamnă că, la fel ca în cazul datelor postate, putem asocia informații cu utilizatorii folosind ID-urile, meta-tastele și valorile meta.

Pentru a vedea acest lucru în acțiune, puteți să aruncați o privire asupra oricăror informații din tabelul bazei de date WordPress și veți găsi că aici se află informații cum ar fi Prenume, Nume, Capacități, si asa mai departe.

Lucrul frumos este că, dacă construiți o aplicație, atunci tabelul meta oferă o mulțime de flexibilitate în ceea ce privește cât de multe informații le puteți asocia în mod real cu oricare dintre utilizatorii dvs..

Folosind WP_User_Query

Mai întâi, rețineți că setarea unei interogări de utilizator este asemănătoare cu crearea unui a WP_Query. Prin asta, vreau să spun că luați o instanță a clasei prin trecerea unui șir de argumente în constructor.

Acum, în ceea ce privește argumentele, este posibil să se precizeze orice se află în tabelele bazei de date asociate. De exemplu, puteți căuta utilizând:

  • rolul utilizatorului,
  • șirul de potrivire a coloanelor (cum ar fi ID-ul, numele de conectare, adresa URL etc.),
  • adresa de email,
  • si asa mai departe.

Dar este mai mult decât atât. De asemenea, puteți specifica parametrii care se referă la meta date, astfel încât să puteți interoga diferiți utilizatori, să zicem, pe baza rolului lor și a unei colecții de informații despre meta de utilizator.

Vom examina acest lucru putin mai detaliat momentan, insa este important de remarcat faptul ca puteti construi interogari si mai avansate care se ocupa de includerea de piese de date meta de utilizator, cu exceptia metadatelor utilizatorilor, cum si de care doriti sa comandati datele (de exemplu, prin numele de utilizator ascendent) și chiar și parametrii de paginare, astfel încât să putem accesa cu ușurință înregistrările utilizatorilor.

Un exemplu practic

Bineînțeles, ce bine este să vorbim despre un API fără să analizăm cum să îl folosim? În următorul exemplu, vom lua un exemplu de conturi de utilizator și apoi vom repeta interogarea până când vom construi unul care încearcă să demonstreze o varietate de caracteristici pe care le oferă.

Cu acest lucru, să spunem că vrem să realizăm următoarele:

  • regăsiți toți administratorii,
  • care au precizat un prim nume,
  • ordonate după data de înregistrare în ordine crescătoare,
  • și să paginăm astfel încât să preluăm doar un număr de utilizatori pe pagină

Deci sa începem. Amintiți-vă, vom construi această linie de interogare în linie, așa că ar trebui să fie relativ ușor de înțeles pe măsură ce aceasta continuă să evolueze.

Dacă, în orice moment, aveți întrebări despre ceea ce se întâmplă, atunci nu ezitați să le aruncați în comentarii.

În primul rând, dorim să specificăm că vrem să includem toți administratorii:

 $ args = array ('rol' => 'Administrator'); $ user_query = noul WP_User_Query ($ args);

După aceasta, vrem să ne asigurăm că au primul nume și ultima specificată. Din moment ce aceste informații sunt stocate în tabelul de date meta, vom avea nevoie de parametrii de utilizator pentru interogarea meta.

Mai precis, vom cere să preluăm toți administratorii care au un prim nume specificat (sau, mai degrabă, nu este gol).

 $ arge = array ('rol' => 'Administrator', 'meta_query' => array ('meta_key' => 'first_name', 'meta_value' => 'meta_compare' noul WP_User_Query ($ args);

În continuare, vom ordona rezultatele după data de înregistrare a administratorilor în ordine crescătoare:

 $ meta_value '=> "meta_compare" =>'! = ')' orderby '=>' array = 'înregistrat', 'comanda' => 'ASC'); $ user_query = new WP_User_Query ($ args);

Și, în cele din urmă, vom spune că vrem să retragem cinci înregistrări la un moment dat:

 // Numărul de înregistrări care trebuie afișate pe o pagină $ display_count = 5; // Trebuie să obținem numărul paginii curente pe care suntem. // Aceasta este utilă pentru calcularea offsetului corect $ page = get_query_var ('paginat')? get_query_var ("paginat"): 1; // După aceea, calculați offsetul $ offset = ($ page - 1) * $ display_count; $ meta_value '=> "meta_compare" =>'! = ')' orderby '=>' array = 'înregistrat', 'comanda' => 'ASC', 'număr' => $ display_count 'offset' => $ offset); $ user_query = new WP_User_Query ($ args);

Și am terminat. Acum este o chestiune de iterare prin interogare, pentru a ne transmite rezultatele. Din nefericire, cu toții putem avea o altă viziune asupra modului în care vrem să facem acest lucru, deci rețineți că bucla pe care o prezint este doar un exemplu (versus  exemplu):

 // Dacă rezultatele sunt bazate pe criteriile noastre ... $ results = "; if (! Empty ($ user_query-> results)) // Pentru fiecare rezultat, să afișăm numele administratorului ($ user_query-> results as $ user) $ results. = 'Numele afișat este:' $ user-> display_name; $ results. = '
„; $ results = get_user_meta ($ user-> ID, 'first_name', true); $ results = '
„; Afișați informațiile de pe ecran. echo $ results;

Și notă: o diferență de la WP_User_Query impotriva WP_Query este că nu este nevoie să resetați niciun fel de date post, deoarece nu lucrăm cu altceva decât cu o bucla autonomă.

Când să utilizați WP_User_Query

În acest moment, căutarea naturală apare cand este o idee bună de folosit WP_User_Query, și veți primi probabil răspunsuri diferite de la persoane diferite, deoarece unele dintre ele previzualizează folosirea altor metode pentru a-și recupera informațiile.

Dar, în general, dacă voi obține informații din baza de date care se ocupă direct și strict cu utilizatorii, apoi folosesc WP_User_Query.

Acum, deoarece setul de rezultate poate fi returnat într-un mod care ar putea fi fuzionat din punct de vedere tehnic sau cel puțin reluat cu un alt set de date, atunci este cu siguranță posibil să faceți acest lucru; cu toate acestea, eu personal cred că acest lucru necesită un pic de experiență care ar putea să nu se potrivească factura pentru toată lumea.

Cu alte cuvinte, nu ezitați să o utilizați așa cum doriți, dar tratați-o cu prudență.

Înainte, întrebări directe împotriva bazei de date

Deci, cu WP_Query și WP_User_Query în spatele nostru, avem încă un API la care ne putem uita pentru a încheia discuția noastră și aceasta este abilitatea de a interoga direct baza de date WordPress.

În ultimul articol care se ocupă de interogări, vom analiza acest API, vom finaliza discuția noastră și apoi vom începe evaluarea finală a tot ceea ce am acoperit în această serie.

Cod