Se hai seguito questa serie, avrai una comprensione di come WP_Query
è strutturato e come lo usi per scrivere query personalizzate. Essere in grado di definire cosa WP_Query
recupera dal database, è necessario sapere quali argomenti è possibile utilizzare per eseguire query sui dati.
WP_Query
ha un gran numero di argomenti possibili, il che lo rende estremamente flessibile. Come puoi usarlo per interrogare praticamente qualsiasi cosa contenuta nel tuo wp_posts
tabella, ha argomenti per ogni permutazione di query che potresti voler eseguire sul tuo contenuto.
In questo tutorial vedrò gli argomenti per i campi personalizzati. Ma prima, un breve riassunto su come si codificano gli argomenti WP_Query
.
Prima di iniziare, facciamo un rapido riassunto su come funzionano gli argomenti WP_Query
. Quando si codifica WP_Query
nei temi o nei plugin, è necessario includere quattro elementi principali:
Se
e mentre
tag e resettare i dati del postIn 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 dicono 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.
I campi personalizzati, noti anche come post metadati, possono utilizzare una classe separata chiamata WP_Meta_Query
. Ciò significa che se vuoi eseguire una query solo per i metadati dei post, puoi utilizzare entrambi WP_Meta_Query
o WP_Query
(che accede WP_Meta_Query
), mentre se si desidera eseguire una ricerca per i metadati del post e altri elementi come il tipo di post, si utilizza WP_Query
.
Il WP_Meta_Query
la classe è trattata in dettaglio altrove in questa serie quindi non entrerò nei dettagli su questo qui, ma la principale differenza tra l'uso di questo e quello WP_Query
è questo WP_Query
ti permette di creare alcuni semplici argomenti senza usare array annidati.
I principali parametri per l'utilizzo WP_Query
per interrogare i campi personalizzati sono i seguenti:
meta_key
(stringa): Tasto campo personalizzato.meta_value
(stringa): Valore del campo personalizzato.meta_value_num
(numero): Valore del campo personalizzato.meta_compare
(stringa): Operatore per testare il 'Meta_value'
. I valori possibili sono '='
, '! ='
, '>'
, '> ='
, '<'
, '<='
, 'PIACE'
, 'NON COME'
, 'NEL'
, 'NON IN'
, 'FRA'
, 'NON IN MEZZO'
, 'NON ESISTE'
, 'REGEXP'
, "NON REGEXP"
o 'RLIKE'
. Il valore predefinito è '='
.Utilizzare questi parametri per una semplice query di campo personalizzata. Ad esempio, per pubblicare post che hanno un campo personalizzato con la chiave key1
(indipendentemente dal suo valore), si utilizza questo argomento:
$ args = array ('meta_key' => 'key1');
Ciò restituirebbe tutti i messaggi con un campo personalizzato con key1
chiave, qualunque sia il valore.
Se si desidera specificare un valore, aggiungere un argomento aggiuntivo per questo:
$ args = array ('meta_key' => 'key1', 'meta_value' => 'value1');
Ciò restituirebbe tutti i messaggi con un campo personalizzato con key1
chiave e il valore1
valore per questo.
In alternativa, puoi recuperare tutti i post con un campo personalizzato con il valore valore1
, indipendentemente dalla chiave. Questo potrebbe essere utile quando hai più chiavi di campo personalizzate con valori duplicati:
$ args = array ('meta_value' => 'valore1');
Quindi, come puoi vedere, puoi richiedere solo la chiave o il valore del campo personalizzato, non è sempre necessario specificarli entrambi.
Potresti aver notato sopra che ci sono molti parametri potenziali per il meta_compare
argomento, e il loro uso potrebbe non essere sempre immediatamente evidente. Diamo un'occhiata a quelli che potresti usare di più:
=
: È uguale a. Questo è l'impostazione predefinita, quindi se non includi a meta_compare
argomento, questo è ciò che verrà utilizzato da WP_Query.!+
: Non è uguale a.>
: Più grande di.> =
: Maggiore o uguale a.<
: Meno di.<=
: Minore o uguale a.PIACE
: Questo ignorerà il caso del valore che usi e puoi anche usarlo con caratteri jolly per trovare valori come il valore che stai cercando.NON COME
: Funziona in modo simile a LIKE ma richiede il contrario!NEL
: Utilizza questo con un array nell'argomento 'value' per trovare i post con uno o più valori nell'array.FRA
: Utilizzare con una matrice di due valori numerici (specificati in meta_value
argomento) per trovare i post con un valore di campo personalizzato tra questi valori (ma non uguali a questi).NON IN MEZZO
: Invia messaggi con valori di campo personalizzati all'esterno di una matrice di due valori numerici specificati da meta_value
discussione.Diamo un'occhiata ad alcuni usi di esempio di questo argomento.
Per prima cosa, puoi escludere chiavi o valori di campo personalizzati usando il meta_compare
discussione. Quindi, per recuperare tutti i messaggi ad eccezione di quelli con un campo personalizzato con il key1
chiave, useresti questo:
$ args = array ('meta_key' => 'key1', 'meta_compare' => '! =');
Puoi anche usare il 'NON IN'
valore per il meta_compare
argomento, che può essere utilizzato anche con una stringa di più valori:
$ args = array ('meta_key' => 'key1, key2', 'meta_compare' => 'NOT IN');
Ciò richiederebbe i post che non hanno campi personalizzati con il key1
o key2
valori. Se vuoi essere più specifico, magari interrogando i post con un campo personalizzato e non con un altro, utilizzi un array annidato, che verremo a breve.
Gli esempi sopra usano valori non numerici. Puoi usare WP_Query
con campi personalizzati con valori numerici, non solo per recuperare i post con un campo personalizzato con quel valore, ma anche per recuperarli con campi personalizzati con valori più alti o più bassi. È possibile utilizzarlo in un negozio, ad esempio, se si cercano articoli sopra o sotto un determinato prezzo.
Per trovare post con un valore di campo personalizzato sopra un determinato numero, usa qualcosa di simile a questo:
$ args = array ('meta_key' => 'numkey', 'meta_value' => '100', 'meta_compare' => '>');
Ciò restituirebbe tutti i messaggi con un campo personalizzato con numkey
chiave e un valore di oltre 100
. Se si desidera eseguire la query per valori pari o superiori a 100, si utilizzerà 'meta_compare' => '> ='
.
Puoi anche trovare post i cui campi personalizzati hanno valori tra due numeri specificati utilizzando il FRA
argomento e un array:
$ args = array ('meta_key' => 'numkey', 'meta_value' => array ('100', '200'), 'meta_compare' => 'BETWEEN');
Questo troverà tutti i messaggi con un valore nel numkey
campo personalizzato compreso tra 100 e 200.
Se si desidera eseguire la query per più di un campo personalizzato o utilizzare più di un operatore, è possibile utilizzare un array nidificato.
Questi prendono la seguente struttura:
$ args = array ('meta_query' => array ('relation' => ", // argomento opzionale. array (// argomenti 'meta_query' vanno qui.)));
Il modo in cui strutturi il 'Meta_query'
argomento in WP_Query
è esattamente la stessa del modo in cui lo fai usando il WP_Meta_Query
classe, che è trattato in un prossimo tutorial di questa serie, quindi non lo duplicherò qui.
Dal momento che WordPress versione 4.1 è anche possibile utilizzare più livelli di array nidificati per creare query sempre più complesse e precise. Questi assomigliano a questo:
$ args = array ('meta_query' => array ('relation' => ", // argomento opzionale. array ('relation' =>", array (// Primo set di argomenti 'meta_query' andare qui.), array (// La seconda serie di argomenti "meta_query" va qui.))));
Ciò consente di utilizzare relazioni diverse a diversi livelli della query, ad esempio la ricerca di post con un valore in una chiave di campo personalizzata o con entrambi i valori in un'altra chiave di campo personalizzata. Questo è trattato più dettagliatamente, con esempi, nel tutorial su WP_Meta_Query
classe, che fa parte di questa serie.
Usando il WP_Query
classe per interrogare i metadati dei tuoi post (o campi personalizzati) ti dà molta flessibilità, con molteplici potenziali argomenti combinati con un numero di operatori per aiutarti a interrogare il tuo database esattamente nel modo che desideri.
Se si desidera utilizzare solo argomenti post metadati nella query (e non combinarlo con altri argomenti, ad esempio per i tipi di post), è anche possibile utilizzare il WP_Meta_Query
classe, che è trattata più avanti in questa serie.