Bruke WordPress for utvikling av webapplikasjoner WP_User_Query

I denne serien har vi tatt en titt på hvordan WordPress kan brukes til utviklingswebapplikasjoner, omtrent som en rekke forskjellige rammer og andre verktøy som er tilgjengelige.

Fra begynnelsen av den siste artikkelen begynte vi å se på de forskjellige alternativene som vi har når det gjelder å spørre WordPress-dataene. Først vurderte vi WP_Query.

I denne artikkelen skal vi fortsette å se på tilgjengelige alternativer for å hente informasjon fra databasen ved å se på WP_User_Query Deretter vil vi gjøre oppmerksom på hvordan vi kan kjøre direkte SQL-spørringer mot databasen.

Men for nå, la oss ta en titt på hva WordPress tilbyr oss i veien for å administrere våre brukere, deres informasjon og deres tilhørende metadata.

Spørre databasen: En oppdatering

Før vi går inn i diskutere selve API, la oss raskt gjennomgå noen av informasjonen om WordPress-databasen, slik at vi har satt et felles nivå av informasjon derav for å fungere for resten av artikkelen, API og eksemplene vi " Jeg skal dekke.

I den siste artikkelen nevnte vi tre spesifikke punkter:

  1. Å spørre om WordPress-databasen refererer til gjeldende rettsopplysninger fra databasen (som det er tilfelle med resten av databasebaserte webapplikasjoner).
  2. Det finnes flere måter å spørre databasen på. Noen av disse er mer korrekte enn andre i enkelte situasjoner - og vi må forstå hvilke måter som gir seg den beste situasjonen.
  3. Det er viktig å forstå APIene slik at vi vet hva som er tilgjengelig for oss, hvilken fordel hver tilbud har, og hvilke situasjoner passer best for en gitt API.

Når vi dekket WP_Query, vi har vurdert hvordan det kan brukes til å hente innlegg, sider, egendefinerte innleggstyper, relaterte taksonomier, kategorier, vilkår og så videre.

Vi presenterer WP_User_Query

på samme måte, WP_User_Query tilbyr mye av samme funksjonalitet, men innenfor konteksten til brukere. Codex definerer spørringen:

WP_User_Query er en klasse, ..., som gjør det mulig å spørre WordPress database tabeller 'wp_users' og 'wp_usermeta'.

I motsetning til den første definisjonen av WP_Query, Dette er mindre teknisk og relativt lett å forstå spesielt hvis du er kjent med wp_users bord og wp_usermetadata tabeller.

Men hvis du ikke er det, ikke så mye: Vi skal dekke alt som trengs, ikke bare for å forstå tabellene, men for å forstå API, så vel.

Slik bruker du WP_User_Query

De wp_users bord og wp_usermetadata Tabeller er ansvarlige for lagring av brukerdata.

Tabellskjemaet

Informasjonen for hver av tabellene er tilgjengelig i Codex (som du finner her og her), og jeg anbefaler at alle vurderer det. Imidlertid kan informasjonen om hvert bord forenkles som følger:

  • De brukere Tabellen opprettholder listen over brukere i systemet, og minimumsinformasjonen for å gi brukeren tilgang til WordPress. Dette inkluderer automatisk tildelt ID, innlogging, passord, hvordan å vise navn, e-postadresse, når de registrerte, deres status og nettadressen til deres nettsted (hvis spesifisert).
  • De usermeta bord brukes til å lagre mer generisk informasjon gjennom enkle nøkkel / verdi par. Det vil si at, akkurat som med postdata, kan vi knytte informasjon med brukere ved hjelp av deres IDer, metataster og meta verdier.

For å se dette i aksjon, kan du ta en titt på hvilken som helst WordPress database tabellinformasjon, og du vil oppdage at dette er hvor informasjon som Fornavn, etternavn, evner, og så videre.

Det fine er at hvis du bygger et program, gir metabordet mye fleksibilitet med hensyn til hvor mye informasjon du virkelig kan knytte til noen av brukerne dine.

Bruke WP_User_Query

Vær først oppmerksom på at å sette opp en brukerforespørsel er omtrent som å sette opp en WP_Query. Dermed mener jeg at du tar tak i en forekomst av klassen ved å sende en rekke argumenter til konstruktøren.

Nå, så langt som argumentene angår, kan alt som er angitt i de tilknyttede databasetabeller angis. For eksempel kan du søke ved hjelp av:

  • brukerrollen,
  • strengmatcher på kolonner (for eksempel ID, påloggingsadresse, nettadressen og så videre),
  • epostadresse,
  • og så videre.

Men det er mer enn det. Du kan også angi parametere relatert til metadata, slik at du kan spørre for ulike brukere, si, basert på deres rolle og en samling av bruker-meta-informasjon.

Vi vil se nærmere på dette litt mer detaljert, men det er også verdt å merke seg at du kan konstruere enda mer avanserte spørringer som omhandler blant annet bruk av metadata, unntatt bruker meta data, hvordan og vil bestille data (si ved stigende brukernavn), og til og med paginasjonsparametere slik at vi enkelt kan bla gjennom brukeroppføringer.

Et praktisk eksempel

Selvfølgelig, hvor bra er det å snakke om en API uten å se på hvordan du bruker den? I det følgende eksemplet skal vi ta et eksempel på brukerkontoer, og deretter gjenta på spørringen til vi har konstruert en som forsøker å demonstrere en rekke funksjoner som den gir.

Med det sagt, la oss si at vi ønsker å oppnå følgende:

  • hente alle administratorer,
  • hvem har et fornavn spesifisert,
  • bestilt etter registreringsdato i stigende rekkefølge,
  • og paginere slik at vi bare henter flere brukere per side

Så, la oss komme i gang. Husk at vi skal bygge denne spørrelinjen etter linje, så det skal være relativt lett å forstå som det fortsetter å utvikle seg.

Hvis du til enhver tid har spørsmål om hva som skjer, så vær så snill å slippe dem i kommentarene.

Først vil vi spesifisere at vi vil inkludere alle administratorer:

 $ args = array ('role' => 'Administrator'); $ user_query = ny WP_User_Query ($ args);

Etter det vil vi sørge for at de har sitt fornavn og sist angitt. Siden denne informasjonen er lagret i metatatabellen, må vi bruke brukerparametere for meta-spørringen.

Spesielt vil vi be om å hente alle administratorer som har et fornavn som er spesifisert (eller, heller ikke det er tomt).

 $ args = array ('role' => 'Administrator', 'meta_query' => array ('meta_key' => 'first_name', 'meta_value' => "meta_compare '=>'! = ')); $ user_query = Ny WP_User_Query ($ args);

Neste opp, vi skal bestille resultatene av administrators registreringsdato i stigende rekkefølge:

 $ 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);

Og til slutt vil vi si at vi ønsker å trekke tilbake fem poster om gangen:

 // Antall poster som skal vises på en side $ display_count = 5; // Vi må hente nummeret på gjeldende side vi er på. // Dette er nyttig for beregning av riktig offset $ page = get_query_var ('paged')? get_query_var ('paged'): 1; // Etter det beregner du offset $ offset = ($ side - 1) * $ display_count; $ args = array ('role' => 'Administrator', 'meta_query' => array ('meta_key' => 'first_name', 'meta_value' => "meta_compare '=>'! = ')' orderby '=> 'registrert', 'rekkefølge' => 'ASC', 'nummer' => $ display_count 'offset' => $ offset); $ user_query = nytt WP_User_Query ($ args);

Og vi er ferdige. Nå er det et spørsmål om iterating gjennom spørringen for å kunne levere resultatene våre. Dessverre kan vi alle ha en annen, ta på hvordan vi vil gjøre dette, så merk at sløyfen jeg viser er bare et eksempel (versus de eksempel):

 // Hvis det er resultater basert på våre kriterier ... $ results = "; if (! Empty ($ user_query-> results)) // For hvert av resultatene, la vi vise administratorens navn foreach ($ user_query-> resultater som $ bruker) $ results. = 'Skjermnavnet er:'. $ user-> display_name; $ results. = '
'; $ resultater. = get_user_meta ($ user-> ID, 'first_name', true); $ resultater. = '
'; // Vis informasjonen på skjermen. ekko $ resultater;

Og merk: En forskjell fra WP_User_Query mot WP_Query er at det ikke er nødvendig å tilbakestille noen form for postdata fordi vi ikke jobber med noe annet enn en selvstendig krets.

Når skal du bruke WP_User_Query

På dette punktet oppstår søket naturlig av når er en god ide å bruke WP_User_Query, og du får sannsynligvis forskjellige svar fra forskjellige personer, som noen forhåndsvisning for å bruke andre metoder for å hente informasjonen.

Men generelt sett, hvis jeg skal hente informasjon fra databasen som omhandler direkte og strengt med brukere, så bruker jeg WP_User_Query.

Nå, siden resultatsettet kan returneres på en måte som teknisk sett kan fusjoneres, eller i det minste omarbeides med et annet sett med data, så er det definitivt mulig å gjøre dette; Men jeg tror personlig at dette krever litt erfaring som kanskje ikke passer til regningen for alle.

Med andre ord, vær så snill å bruke det som du vil, men behandle det med forsiktighet.

Neste opp, Direkte spørringer mot databasen

Så med WP_Query og WP_User_Query bak oss har vi enda en API som vi kan se for å utrunde diskusjonen vår, og det er muligheten til å søke direkte på WordPress-databasen.

I den endelige artikkelen som omhandler spørringer, tar vi en titt på denne API-en, avsluttes diskusjonen vår, og deretter går vi inn i den endelige vurderingen av alt vi har dekket gjennom denne serien.