Abbiamo analizzato in che modo WordPress può essere utilizzato come base per lo sviluppo di applicazioni, ma una delle cose che dobbiamo ancora considerare è la modalità di interrogazione del database per recuperare i risultati per una determinata vista..
Nello specifico, non abbiamo parlato di come ottenere informazioni dal database e inserirle nelle nostre pagine.
Se hai familiarità con altri framework, probabilmente avrai familiarità con un sistema di mapping relazionale a oggetti (un ORM).
Per coloro che non hanno familiarità con un ORM, in sostanza, si tratta di un software che si trova tra l'applicazione e il database e ci consente di recuperare righe e colonne come oggetti, trattarli come tali e quindi serializzare le loro modifiche indietro al database.
È roba davvero interessante. Tuttavia, WordPress lo fa non offrire quella flessibilità.
Invece, ci sono un insieme di API che offre che ci permettono di apportare modifiche al database. Ci sono un certo numero di API che sono disponibili per noi, ognuna delle quali verrà esplorata su questo set finale di articoli.
Per prima cosa, daremo un'occhiata a WP_Query
. Quindi, daremo un'occhiata a WP_User_Query
, seguito dal $ wpdb
oggetto che è disponibile come globale
in WordPress.
Ma ne riparleremo più avanti. Ora, a WP_Query
.
Prima di parlare seriamente di interrogare il database di WordPress, penso che sia fondamentale definire esattamente cosa significa, perché è importante e cosa comporta.
Se non altro, questo è inteso a livellare le aspettative per i lettori indipendentemente dal livello di esperienza.
Interrogare il database di WordPress rappresenta esattamente quello che ti aspetteresti: recuperare informazioni dal database su cui viene eseguito WordPress.
Non c'è nulla di terribilmente complicato in questo. Tuttavia, lì siamo diversi modi per farlo, ed è importante sapere come farlo e cosa evitare.
In generale, ci sono tre API che sono disponibili e raccomandate per noi da usare, e alcune che sono disponibili, ma lo sono non raccomandato per l'uso.
In questa serie di articoli, copriremo tutto questo.
Se non altro, questo è importante in modo che comprendiamo i modi adeguati per recuperare e archiviare le informazioni nel database nel modo più sicuro e sicuro possibile.
Ricorda: in programmazione, solo perché qualcosa funziona, non significa che sia il modo migliore per farlo.
A tal fine, daremo un'occhiata ai modi consigliati che WordPress fornisce per recuperare e salvare i dati direttamente da e verso il database.
Dopotutto, vogliamo essere sicuri che non stiamo solo costruendo solide applicazioni, ma anche applicazioni sicure ed efficienti.
Come con la maggior parte delle cose, implica l'apprendimento di un'API. Almeno, questo è il caso di due tipi di query.
Per l'articolo finale, richiede che tu sappia, o abbia la volontà di imparare, SQL (come WordPress fa consente di scrivere query non elaborate sul database). Ma ne riparleremo più avanti.
Per ora, ci concentreremo semplicemente sulle API, i parametri disponibili e come / quando usarli nel nostro lavoro.
Anche se puoi leggere tutto WP_Query
nel codice WordPress, penso che valga la pena di distillare alcuni dei punti migliori qui in questo articolo, particolarmente se sei nuovo in WordPress o stai seriamente pensando di scrivere applicazioni usando WordPress.
Il codice definisce WP_Query
come il seguente:
WP_Query è una classe ... che si occupa delle complessità di una richiesta di post (o di pagine) a un blog di WordPress. Il wp-blog-header.php ... fornisce le informazioni sull'oggetto $ wp_query che definiscono la richiesta corrente, e $ wp_query determina il tipo di query con cui ha a che fare (possibilmente un archivio di categorie, archivio datato, feed o ricerca) e recupera il posti richiesti Conserva molte informazioni sulla richiesta, che possono essere estratte in un secondo momento.
Incredibilmente tecnico, giusto?
Ecco come pensarlo dal punto di vista del consumatore:
WP_Query
recupera informazioni su post, pagine, altri tipi di post personalizzati e dati archiviati e rende disponibili le informazioni richieste su tali dati.Da una prospettiva di sviluppo, pensala in questo modo:
WP_Query
è un modo per recuperare informazioni sui tipi di post e sui dati archiviati, nonché i relativi metadati associati e altro ancora. Le informazioni che vengono recuperate possono quindi essere lette, manipolate, salvate e / o visualizzate nei file modello.In breve, WP_Query
fornisce un modo standard per interrogare il database in modo specifico in merito a post, pagine, tipi di post personalizzati e relativi metadati associati, in modo che possiamo lavorare più facilmente con le informazioni dei negozi WordPress.
Nota: Se stai cercando informazioni sulla gestione degli utenti o sulla scrittura di query SQL personalizzate, attendi fino al prossimo set di articoli, in quanto copriremo tali informazioni in modo più dettagliato in quel momento.
Ok, quindi abbiamo coperto che cosa WP_Query
è, perché è utile, e come dovrebbe essere usato, ma questo va solo lontano.
A questo punto, è tempo di dare un'occhiata a quali parametri possono essere passati WP_Query
e alcuni esempi pratici su come usarlo.
Primo, WP_Query
può accettare argomenti per: Autori, Categorie, Tag, Tassonomie, Query di ricerca generiche, Post, Pagine, Tipi di post personalizzati, Stato, Impaginazione, Ordine di registrazione, Date, Campi personalizzati, Permessi, memorizzazione nella cache e Campi di restituzione.
In breve, tutto ciò che riguarda i tipi di post, i tag delle categorie e i loro metadati possono essere recuperati utilizzando WP_Query
.
Se hai guardato un codice tema WordPress, o hai lavorato con WordPress in qualsiasi capacità prima di leggere questo articolo, è molto probabile che tu abbia visto un codice come questo:
E, in WordPress, questo è noto come The Loop.
In breve, The Loop è dove tutto accade in quanto riguarda la visualizzazione delle informazioni recuperate da una query.
A tal fine, se stai scrivendo una query usando
WP_Query
, allora probabilmente userete questa stessa struttura per il vostro lavoro.Ma ne vedremo di più in un attimo.
Esempi pratici
Iniziare con
WP_Query
è facile. Ad esempio, supponiamo di voler impostare un modello che visualizzi tutti i post per un singolo autore.Per farlo, possiamo usare l'ID dell'autore. Quindi diciamo che vogliamo recuperare tutti i post, le pagine e i contenuti scritti dall'autore con l'ID di "1".
1); $ my_query = new WP_Query ($ args);E poi vogliamo iterarlo attraverso:
if ($ my_query-> have_posts ()) while ($ my_query-> have_posts ()) // Funziona con il post dell'autore // Parliamo di questa riga successiva più avanti nell'articolo wp_reset_postdata ();Abbastanza facile, giusto?
Ma rendiamolo un po 'più complicato. Diciamo che vogliamo solo recuperare i post di quell'autore che rientrano nel tipo di messaggio personalizzato "Fotografia" e che sono stati pubblicati nel 2013.
Per farlo, passeremmo queste informazioni:
1 'post_type' => 'photography "date_query' => array ('2013')); $ my_query = new WP_Query ($ args);E poi scorrere la query in questo modo:
if ($ my_query-> have_posts ()) while ($ my_query-> have_posts ()) // Funziona con i post restituiti // Parliamo di questa riga successiva più avanti nell'articolo wp_reset_postdata ();Ma può diventare un po 'più complesso a seconda delle informazioni che abbiamo a disposizione in un dato momento durante il ciclo di vita dell'applicazione.
Ad esempio, supponiamo di voler creare a livello di codice un tipo di post personalizzato con un titolo e una lumaca specifici, ma solo se uno non esiste già.
Ci sono tre passaggi per farlo:
- Passa gli argomenti necessari alla classe
- Corri attraverso il Loop alla ricerca di eventuali post che possono esistere
- Se il post non esiste, quindi crearlo
Ecco come farlo:
// Cerca il tipo di post specificato e lo slug pubblicati o presenti nel cestino $ args = array ('post_type' => $ post_type, 'post_name' => $ slug, 'post_status' => array ('pubblica', 'spazzatura' ) ); $ post_type_query = new WP_Query ($ args); // Un post con quell'informazione esiste già, quindi rimuoverlo dal cestino if ($ post_type_query-> have_posts ()) while ($ post_type_query-> have_posts ()) $ post_type_query-> the_post (); // Se il post viene trovato nel cestino, ripristinalo se ('trash' == strtolower (get_post_status (get_the_ID ()))) $ page = get_page (get_the_ID ()); $ page-> post_status = 'pubblica'; wp_update_post ($ page); // Se un post non esiste già con il titolo specificato, crealo se (null == acme_get_permalink_by_slug ($ slug, $ post_type)) $ page_id = wp_insert_post (array ('comment_status' => 'closed' , 'ping_status' => 'closed', 'post_author' => 1, // L'amministratore sta creando la pagina 'post_title' => $ title, 'post_name' => strtolower ($ slug), 'post_status' => 'pubblica ',' post_type '=> strtolower ($ post_type))); // Se un template è specificato negli argomenti della funzione, applichiamo if (null! = $ Template) update_post_meta (get_the_ID (), '_wp_page_template', $ template); // Parleremo di questa riga più avanti nell'articolo wp_reset_postdata ();Come puoi vedere, puoi fare alcune query davvero potenti e fare un lavoro davvero intelligente con WordPress e
WP_Query
se sai come gestire correttamente i parametri.Ora, nel codice sopra, quando stiamo cercando di scoprire se il post esiste già nel cestino, lì siamo modi più ottimali per scrivere una query per verificarlo; tuttavia, il codice sopra è pensato per dimostrare più di un esempio di come farlo usando
WP_Query
di ogni altra cosa.Man mano che approfondiamo questo argomento delle query di scrittura, vedremo altri modi per recuperare più rapidamente le informazioni (come l'utilizzo di SQL raw per
SELEZIONARE
dichiarazioni eELIMINA
oAGGIORNARE
dichiarazioni).A tal fine, consiglio vivamente di familiarizzare con tutti i parametri che accetta. Sebbene ci siano molte opzioni (che è una buona cosa, secondo me), c'è un modo relativamente standard di trasmetterle in modo tale che molte di esse si comportino allo stesso modo di altre.
Vale a dire che una volta che ne hai imparato alcuni, è facile riprendere il resto.
Per di più, se sei davvero interessato a capire meglio le query, ti consiglio di dare un'occhiata a come i parametri corrispondono ai dati nel database sottostante.
Quando utilizzare WP_Query
Ovviamente, questo solleva la questione quando dovresti usare?
WP_Query.
Dopo tutto, WordPress ha una propria gerarchia di template quindi se stai lavorando con un file che rientra in tale gerarchia, utilizzerà automaticamente una query relativa a quel tipo di template.
Ma scrivere applicazioni o anche temi WordPress avanzati ti farà creare modelli che non rientrano nella gerarchia, e quindi hanno bisogno del loro set di query.
Questo è un modo in cui dovrai usarlo
WP_Query
.In secondo luogo, se stai cercando di ritirare un set personalizzato di informazioni - sia esso un pezzo unico o più pezzi - per un determinato post, pagina, tipo di post personalizzato, categoria, tassonomia o così via, quindi
WP_Query
è probabilmente la tua migliore opzione.Una parola su come resettare la query
Ce n'è uno grande capito a usare
WP_Query
questa è la chiave per completare la comprensione dell'API e così èwp_reset_postdata ()
.Proprio come il Codex descrive:
Utilizzare questa funzione per ripristinare la variabile globale $ post del ciclo di query principale dopo un ciclo di query secondario utilizzando il nuovo WP_Query. Ripristina la variabile $ post nel post corrente nella query principale.
A causa di come WordPress mantiene le informazioni usando
globale
variabili, è fondamentale che una volta che hai elaborato, eseguito ed elaborato il tuoWP_Query
, quindi è necessario chiamare questa particolare funzione per ripristinare le informazioni allo stato in cui si trovava prima di quando si eseguiva la propria query.In questo modo WordPress continua a eseguire il looping delle informazioni secondo necessità nella gerarchia dei modelli, in modo tale che i dati non vengano storpiati o persi durante il rendering del contenuto in una pagina o in un'altra pagina.
Avanti, WP_User_Query
Se
WP_Query
è così fondamentale per creare query efficienti e sicure per i tipi di post e i loro attributi correlati, come facciamo lo stesso per gli utenti?Dopotutto, abbiamo già stabilito che WordPress offre fantastiche funzionalità per la gestione degli account, ma in realtà non abbiamo discusso il modo in cui possiamo gestire gli utenti attraverso l'interrogazione del database.
Nel prossimo articolo, daremo un'occhiata esattamente a questo. E se hai familiarità con
WP_Query
- che dovresti leggere dopo aver letto questo articolo - quindi troverai il prossimo articolo molto facile da seguire.