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.
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:
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.
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.
De wp_users
bord og wp_usermetadata
Tabeller er ansvarlige for lagring av brukerdata.
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:
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.
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:
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.
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:
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.
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.
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.