Finora in questa serie hai imparato una serie di argomenti che puoi usare con WP_Query
classe, per selezionare i post per tipo, categoria, tag, metadati, data, stato e molto altro.
In questo tutorial finale su WP_Query
argomenti, eseguirò alcuni parametri meno frequentemente usati che possono dare alle tue query ancora più flessibilità.
I parametri che tratteremo qui sono per:
Prima di iniziare, facciamo un rapido riepilogo su come codificare i tuoi argomenti con WP_Query
.
Quando si codifica WP_Query
nei temi o nei plugin, è necessario includere quattro elementi principali:
In pratica questo sarà simile al seguente:
have_posts ()) // Inizia il ciclo sui risultati della query. while ($ query-> have_posts ()) $ query-> the_post (); // I contenuti dei risultati dei post interrogati vanno qui. // Ripristina i dati del post originale. wp_reset_postdata (); ?>
Gli argomenti sono ciò che dice a WordPress quali dati recuperare dal database e sono quelli che coprirò qui. Quindi tutto ciò su cui ci stiamo concentrando qui è la prima parte del codice:
$ args = array (// Argomenti per la tua query.);
Come puoi vedere, gli argomenti sono contenuti in un array. Imparerai come codificarli mentre lavori attraverso questo tutorial.
Esiste un modo specifico per codificare gli argomenti nell'array, che è il seguente:
$ args = array ('parameter1' => 'value', 'parameter2' => 'value', 'parameter3' => 'value');
È necessario includere i parametri e i relativi valori tra virgolette singole, utilizzare =>
tra di loro e separarli con una virgola. Se si sbaglia, WordPress potrebbe non aggiungere tutti i tuoi argomenti alla query o si potrebbe ottenere una schermata bianca.
Esistono quattro parametri che è possibile utilizzare per eseguire query per autore:
autore
(int): usa l'ID autorenome dell'autore
(stringa): usa 'user_nicename' (NON nome)author__in
(schieramento): usa l'ID autoreauthor__not_in
(schieramento)Il primo, autore
, ti consente di interrogare i post di uno o più autori, fornendo l'ID dell'autore:
$ args = array ('author' => '2');
Il codice sopra riporta tutti i messaggi dell'autore di cui è l'ID 2
.
Puoi anche utilizzare una stringa per interrogare i post di più di un autore:
$ args = array ('author' => '1, 2');
Se si desidera eseguire una query per nome, si utilizzerà il nome dell'autore
parametro:
$ args = array ('author_name' => 'rachelmccollin');
Questo parametro prende il valore dal user_nicename
campo nel database come argomento, che viene visualizzato come nickname nella schermata di amministrazione degli utenti:
Nota che, essendo modificabile dagli utenti, sarai più sicuro da usare autore
parametro se pensi che i tuoi utenti potrebbero cambiarlo.
Puoi anche eseguire una query per i post di un array di autori:
$ args = array ('author__in' => array ('1', '2'));
Quanto sopra richiederà i post di due autori: quelli con ID 1
e 2
, dandoti gli stessi risultati della stringa che ho usato con autore
parametro sopra.
Infine, puoi escludere i post di uno o più autori utilizzando il author__not_in
parametro. L'argomento sotto le query per tutti i messaggi tranne quelli per autore 1
:
$ args = array ('author__not_in' => array ('1'));
Oppure puoi escludere più autori:
$ args = array ('author__not_in' => array ('1', '2'));
In alternativa puoi usare il autore
parametro e utilizzare un segno meno davanti all'ID autore per escludere un autore:
$ args = array ('author' => '-2');
C'è solo un parametro per la ricerca, che è S
. Usalo per interrogare per i messaggi che corrispondono a un termine di ricerca. Quindi, ad esempio per richiedere i post contenenti le parole chiave "il mio cibo preferito", dovresti usare questo:
$ args = array ('s' => 'il mio cibo preferito');
Potresti trovare utile per cercare i post correlati con parole chiave simili, ad esempio.
È possibile utilizzare i due parametri password per interrogare i post con e senza protezione tramite password:
has_password
(bool)post_password
(stringa)Il primo parametro, has_password
, ti consente di cercare post con o senza protezione tramite password. Quindi, per cercare post che sono protetti da password:
$ args = array ('has_password' => true);
E per i post che non hanno password:
$ args = array ('has_password' => false);
Puoi anche eseguire una query tramite la password stessa, utilizzando il comando post_password
parametro:
$ args = array ('post_password' => 'mypassword');
C'è solo un parametro disponibile per le autorizzazioni, permanente
, che usi per interrogare i post che l'utente corrente ha il permesso di leggere. Ci vuole il 'leggibile'
valore ed è progettato per essere combinato con altri argomenti.
Quindi, per interrogare i post protetti da password e visualizzarli solo se l'utente ha i permessi appropriati, dovresti usare questo:
$ args = array ('has_password' => true, 'perm' => 'leggibile');
Oppure per visualizzare bozze di post se l'utente corrente ha il permesso di vederli, dovresti usare questo:
$ args = array ('post_status' => 'draft', 'perm' => 'leggibile');
Esistono tre parametri di memorizzazione nella cache, che impediscono l'aggiunta alla cache dei dati recuperati dalla query:
cache_results
(booleano): posta cache delle informazioniupdate_post_meta_cache
(booleano): posta cache di meta-informazioneupdate_post_term_cache
(booleano): cache di informazioni post termineIl valore predefinito di tutti e tre è vero
: non è necessario usarli se si desidera che i dati vengano aggiunti alla cache.
Quindi, per visualizzare tutti i messaggi di Prodotto
inserisci il tipo ma non aggiungi le informazioni del post alla cache, dovresti usare questo:
$ args = array ('post_type' => 'product', 'cache_results' => false);
Normalmente non si dovrebbero usare questi parametri, dato che è buona pratica aggiungere dati di post alla cache. Tuttavia, a volte potresti voler recuperare i post in modo da poter utilizzare solo alcuni dei dati del post, nel qual caso non è necessario il resto dei dati dei post nella cache. Un esempio potrebbe essere quando si desidera generare un elenco di titoli di post con collegamenti, nel qual caso non è necessario che i dati post termine oi metadati vengano aggiunti alla cache:
$ args = array ('post_type' => 'product', 'update_post_meta_cache' => false, 'update_post_term_cache' => false);
Puoi usare il i campi
parametro per specificare quali campi restituire dalla query. Questo può salvare i dati di ritorno dai campi nel database che non è necessario quando si generano i dati nel loop.
L'impostazione predefinita è di restituire tutti i campi, ma hai due opzioni con i campi
parametro per limitare questo. Prima il 'id'
discussione:
$ args = array ('fields' => 'ids');
Ciò restituirebbe solo una matrice di ID post e nessun altro campo. Se volessi produrre qualcosa nel tuo loop (come il titolo del post) dovresti usare funzioni come get_the_title ($ post-> ID);
emettere il titolo, che sarebbe un modo prolisso di fare le cose.
L'altro argomento che è possibile utilizzare recupera un array associativo di ID post con ID post figlio:
$ args = array ('fields' => 'id => parent');
Lo useresti per interrogare i post in base agli altri tuoi argomenti più i loro figli.
Questa parte della serie su WP_Query
introduce la serie finale di parametri per il WP_Query
classe. È possibile utilizzarli per interrogare i post per autore, lo stato protetto da password o la password stessa e i termini di ricerca e per impostare se i risultati della query vengono aggiunti alla cache e quali campi vengono restituiti dalla query.
Nella parte successiva di questa serie, vedrai alcuni esempi di utilizzo WP_Query
nei tuoi temi o plugin.