I primi diversi lavori su come ti aspetteresti:
= equals
!= does not equal
> greater than
>= greater than or equal to
< less than
<= less than or equal to
LIKE
e NOT LIKE
sono operatori SQL che ti consentono di aggiungere simboli jolly, quindi potresti avere una meta query simile a questa:
array(
'key' => 'name',
'value' => 'Pat',
'compare' => 'LIKE'
)
Ciò restituirebbe tutti i post in cui il meta-valore "name" ha la stringa "Pat". In questo caso, "Pat" "Patricia" e "Patrick" verrebbero tutti restituiti. C'è una spiegazione tutorial non WordPress qui .
L'aggiunta del carattere jolly %
non è necessaria, perché viene aggiunta per impostazione predefinita come @Herb ha detto nella sua risposta di seguito . In questo modo: $meta_value = '%' . like_escape( $meta_value ) . '%';
- vedi fonte .
IN
e NOT IN
seleziona tutte le corrispondenze che sono (o non sono) nella matrice data. Quindi potresti fare qualcosa del genere:
array(
'key' => 'color',
'value' => array('red', 'green', 'blue')
'compare' => 'IN'
)
e otterrebbe tutti i post con il colore impostato su rosso, verde o blu. Usando 'NOT IN' si ottiene il contrario, tutti i post che hanno un valore impostato su qualcosa di diverso da ciò che è nella matrice.
L'SQL generato per questo sarebbe simile al seguente:
SELECT * FROM posts_meta WHERE value IN ("red", "green", "blue")
BETWEEN
e NOT BETWEEN
ti consentono di definire un intervallo di valori che potrebbero essere corretti e richiedono di fornire due valori in un array nella tua meta_query:
array(
'key' => 'price',
'value' => array(20,30)
'compare' => 'BETWEEN'
)
Questo ti porterà tutti i post in cui il prezzo è compreso tra 20 e 30. Questa persona scava in un esempio con le date.
NOT EXISTS
è proprio come sembra: il meta valore non è impostato o è impostato su un valore nullo. Tutto ciò che serve per quella query è l'operatore chiave e confronto:
array(
'key' => 'price',
'compare' => 'NOT EXISTS'
)
Questa persona aveva bisogno di interrogare meta valori inesistenti e aveva bisogno che giocassero bene con gli altri.
Spero che sia di aiuto!
meta_query
array, non è necessario aggiungere il prefisso alle chiavimeta_
. Se stai usando$query->meta_key
,$query->meta_value
ecc., Questi dovrebbero comunque conservare il prefisso.