Os primeiros trabalhos funcionam como você esperaria:
= equals
!= does not equal
> greater than
>= greater than or equal to
< less than
<= less than or equal to
LIKE
e NOT LIKE
são operadores SQL que permitem adicionar símbolos curinga, para que você possa ter uma meta consulta semelhante a esta:
array(
'key' => 'name',
'value' => 'Pat',
'compare' => 'LIKE'
)
Isso retornaria todas as postagens em que o meta-valor "name" possui a string "Pat". Nesse caso, "Pat" "Patricia" e "Patrick" seriam todos devolvidos a você. Há uma explicação tutorial não-WordPress aqui .
%
Não é necessário adicionar o caractere curinga , porque ele é adicionado por padrão, como @Herb disse em sua resposta abaixo . Assim: $meta_value = '%' . like_escape( $meta_value ) . '%';
- veja a fonte .
IN
e NOT IN
selecione quaisquer correspondências que estejam (ou não) na matriz especificada. Então você poderia fazer algo assim:
array(
'key' => 'color',
'value' => array('red', 'green', 'blue')
'compare' => 'IN'
)
e obteria todas as postagens com a cor definida em vermelho, verde ou azul. O uso de 'NOT IN' é inverso, qualquer postagem que tenha um valor definido como qualquer outra coisa além do que está na matriz.
O SQL gerado para isso seria algo parecido com isto:
SELECT * FROM posts_meta WHERE value IN ("red", "green", "blue")
BETWEEN
e NOT BETWEEN
permita que você defina um intervalo de valores que possa estar correto e exija dois valores em uma matriz em sua meta_query:
array(
'key' => 'price',
'value' => array(20,30)
'compare' => 'BETWEEN'
)
Isso fornecerá a você todas as postagens em que o preço está entre 20 e 30. Essa pessoa procura um exemplo com datas.
NOT EXISTS
é exatamente o que parece - o valor meta não está definido ou está definido como um valor nulo. Tudo o que você precisa para essa consulta é o operador de chave e comparação:
array(
'key' => 'price',
'compare' => 'NOT EXISTS'
)
Essa pessoa precisava consultar meta-valores inexistentes e precisava que eles se dessem bem com os outros.
Espero que isto ajude!
meta_query
array, suas chaves não deverão ser prefixadasmeta_
. Se você estiver usando$query->meta_key
,$query->meta_value
etc., eles ainda devem manter o prefixo.