In questa serie, abbiamo dato un'occhiata a come WordPress può essere utilizzato per lo sviluppo di applicazioni web in modo molto simile a una serie di diversi framework e altri strumenti disponibili.
A partire dall'ultimo articolo, abbiamo iniziato a esaminare le diverse opzioni che abbiamo in relazione all'interrogazione dei dati di WordPress. Innanzitutto, abbiamo esaminato WP_Query
.
In questo articolo, continueremo a esaminare le opzioni disponibili per il recupero delle informazioni dal database esaminando WP_User_Query
dopo di che concentreremo la nostra attenzione su come possiamo eseguire query SQL dirette sul database.
Ma per ora, diamo un'occhiata a ciò che WordPress ci offre nel modo di gestire i nostri utenti, le loro informazioni e i loro metadati associati.
Prima di entrare nella discussione dell'API reale, rivediamo rapidamente alcune informazioni sul database di WordPress in modo che abbiamo impostato un livello comune di informazioni su cui lavorare per il resto dell'articolo, l'API e gli esempi che abbiamo Io coprirò.
Nell'ultimo articolo abbiamo menzionato tre punti specifici:
Quando abbiamo coperto WP_Query
, abbiamo esaminato come può essere utilizzato per recuperare post, pagine, tipi di post personalizzati, tassonomie correlate, categorie, termini e così via.
allo stesso modo, WP_User_Query
offre molte delle stesse funzionalità ma nel contesto degli utenti. Il codice definisce la query:
WP_User_Query è una classe, ..., che consente di interrogare le tabelle del database di WordPress "wp_users" e "wp_usermeta".
A differenza della definizione iniziale di WP_Query
, questo è meno tecnico e relativamente facile da capire particolarmente se hai familiarità con il wp_users
tavolo e il wp_usermetadata
tavoli.
Ma se non lo sei, non è un grosso problema: copriremo tutto ciò che è necessario non solo per capire le tabelle, ma anche per capire l'API,.
Il wp_users
tavolo e il wp_usermetadata
le tabelle sono responsabili della memorizzazione dei dati dell'utente.
Le informazioni per ciascuna tabella sono disponibili nel Codex (che puoi trovare qui e qui), e consiglio a chiunque di rivederlo; tuttavia, le informazioni su ciascuna tabella possono essere semplificate come segue:
Per vedere questo in azione, puoi dare un'occhiata a tutte le informazioni della tabella del database di WordPress e scoprirai che questo è dove informazioni come Nome, Cognome, Capacità, e così via.
La cosa bella è che se stai costruendo un'applicazione, la meta-tabella offre molta flessibilità su quante informazioni puoi veramente associare a qualcuno dei tuoi utenti.
Innanzitutto, nota che impostare una query utente è come impostare a WP_Query
. Con ciò intendo che prendi una istanza della classe passando una serie di argomenti nel costruttore.
Ora, per quanto riguarda gli argomenti, è possibile specificare tutto ciò che è contenuto nelle tabelle di database associate. Ad esempio, puoi cercare usando:
Ma c'è molto di più. Puoi anche specificare i parametri relativi ai metadati in modo che tu possa eseguire query per vari utenti, ad esempio, in base al loro ruolo e a una raccolta di meta informazioni dell'utente.
Daremo un'occhiata a questo un po 'più in dettaglio momentaneamente, ma vale anche la pena notare che è possibile costruire query ancora più avanzate che riguardano l'inclusione di metadati dell'utente, esclusi i metadati dell'utente, come e come ordinare dati (ad esempio, con nome utente crescente) e anche i parametri di impaginazione in modo da poter scorrere facilmente i record degli utenti.
Certo, a che serve parlare di un'API senza realmente vedere come usarla? Nell'esempio seguente, prenderemo un esempio di account utente, quindi eseguiremo l'iterazione sulla query finché non ne creeremo uno che tenta di dimostrare una varietà di funzionalità che fornisce.
Detto ciò, diciamo che vogliamo ottenere quanto segue:
Quindi iniziamo. Ricorda, costruiremo questa domanda riga per riga, quindi dovrebbe essere relativamente facile da capire mentre continua ad evolversi.
Se, in qualsiasi momento, hai domande su cosa sta succedendo, sentiti libero di lasciarle nei commenti.
Per prima cosa, vogliamo specificare che vogliamo includere tutti gli amministratori:
$ args = array ('role' => 'Administrator'); $ user_query = new WP_User_Query ($ args);
Dopodiché, vogliamo assicurarci che abbiano il loro nome e l'ultimo specificato. Dal momento che tali informazioni sono memorizzate nella tabella dei metadati, saranno necessari i parametri utente per la meta query.
Nello specifico, chiederemo di recuperare tutti gli amministratori che hanno un nome specificato (o, piuttosto, che non è vuoto).
$ args = array ('role' => 'Administrator', 'meta_query' => array ('meta_key' => 'first_name', 'meta_value' => "meta_compare '=>'! = ')); $ user_query = nuovo WP_User_Query ($ args);
In seguito, ordineremo i risultati in base alla data di registrazione degli amministratori in ordine crescente:
$ args = array ('role' => 'Administrator', 'meta_query' => array ('meta_key' => 'first_name', 'meta_value' => "meta_compare '=>'! = ')' orderby '=> 'registered', 'order' => 'ASC'); $ user_query = new WP_User_Query ($ args);
E infine, diremo che vogliamo ritirare cinque record alla volta:
// Il numero di record da visualizzare su una pagina $ display_count = 5; // Abbiamo bisogno di ottenere il numero della pagina corrente su cui ci troviamo. // Questo è utile per calcolare l'offset corretto $ page = get_query_var ('paged')? get_query_var ('paged'): 1; // Successivamente, calcola l'offset $ offset = ($ page - 1) * $ display_count; $ args = array ('role' => 'Administrator', 'meta_query' => array ('meta_key' => 'first_name', 'meta_value' => "meta_compare '=>'! = ')' orderby '=> 'registrato', 'ordine' => 'ASC', 'numero' => $ display_count 'offset' => $ offset); $ user_query = new WP_User_Query ($ args);
E abbiamo finito. Ora si tratta di iterare attraverso la query per produrre i nostri risultati. Sfortunatamente, potremmo avere una visione diversa su come vogliamo farlo, quindi tieni presente che il ciclo che sto mostrando è solo un esempio (contro il esempio):
// Se ci sono risultati in base ai nostri criteri ... $ results = "; if (! Empty ($ user_query-> results)) // Per ciascuno dei risultati, mostriamo il nome foreach degli amministratori ($ user_query-> risultati come $ utente) $ results. = 'Il nome visualizzato è:'. $ utente-> nome_funziona; $ risultati. = '
'; $ results. = get_user_meta ($ user-> ID, 'first_name', true); $ risultati. = '
'; // Visualizza le informazioni sullo schermo. echo $ risultati;
E nota: una differenza da WP_User_Query
contro WP_Query
è che non è necessario ripristinare alcun tipo di dati di post perché non stiamo lavorando con qualcosa di diverso da un ciclo autonomo.
A questo punto, la ricerca sorge spontanea quando è una buona idea da usare WP_User_Query
, e probabilmente otterrai risposte diverse da persone diverse, come in anteprima per utilizzare altri metodi per recuperare le loro informazioni.
Ma, in generale, se ho intenzione di recuperare informazioni dal database che tratta direttamente e rigorosamente con gli utenti, quindi io uso WP_User_Query
.
Ora, dal momento che il set di risultati può essere restituito in un modo che potrebbe tecnicamente essere unito, o almeno rielaborato con un altro insieme di dati, allora è sicuramente possibile farlo; tuttavia, personalmente ritengo che ciò richieda un po 'di esperienza che potrebbe non essere adatta a tutti.
In altre parole, sentitevi liberi di usarlo come volete, ma trattatelo con cautela.
Quindi con WP_Query
e WP_User_Query
dietro di noi, abbiamo un'ultima API a cui possiamo dare un'occhiata per completare la nostra discussione, e questa è la possibilità di interrogare direttamente il database di WordPress.
Nell'articolo finale relativo alle query, daremo un'occhiata a questa API, termineremo la nostra discussione e quindi esamineremo la recensione finale di tutto ciò che abbiamo trattato in questa serie.