Первые несколько работ о том, как вы ожидаете:
= equals
!= does not equal
> greater than
>= greater than or equal to
< less than
<= less than or equal to
LIKE
и NOT LIKE
операторы SQL, которые позволяют вам добавлять символы подстановки, чтобы вы могли иметь мета-запрос, который выглядит следующим образом:
array(
'key' => 'name',
'value' => 'Pat',
'compare' => 'LIKE'
)
Это вернуло бы все посты, где мета-значение "name" содержит строку "Pat". В этом случае «Пэт», «Патриция» и «Патрик» все будут возвращены вам. Там это не-WordPress учебник объяснение здесь .
Добавлять подстановочный знак %
не нужно, потому что он добавляется по умолчанию, как сказал @Herb в своем ответе ниже . Как это: $meta_value = '%' . like_escape( $meta_value ) . '%';
- см. Источник .
IN
и NOT IN
выберите любые совпадения, которые находятся (или не в) в данном массиве. Таким образом, вы можете сделать что-то вроде этого:
array(
'key' => 'color',
'value' => array('red', 'green', 'blue')
'compare' => 'IN'
)
и он получит все сообщения, которые имеют цвет: красный, зеленый или синий. Использование NOT IN приводит к обратному: любые сообщения, для которых установлено значение, отличное от того, что находится в массиве.
Сгенерированный SQL для этого будет выглядеть примерно так:
SELECT * FROM posts_meta WHERE value IN ("red", "green", "blue")
BETWEEN
и NOT BETWEEN
позволяют вам определить диапазон значений, которые могут быть правильными, и требуют, чтобы вы указали два значения в массиве в вашем meta_query:
array(
'key' => 'price',
'value' => array(20,30)
'compare' => 'BETWEEN'
)
Это даст вам все сообщения с ценой от 20 до 30. Этот человек копает пример с датами.
NOT EXISTS
так же, как это звучит - мета-значение не установлено или имеет нулевое значение. Все, что вам нужно для этого запроса, это ключ и оператор сравнения:
array(
'key' => 'price',
'compare' => 'NOT EXISTS'
)
Этому человеку нужно было запрашивать несуществующие мета-значения, и им нужно было хорошо играть с другими.
Надеюсь это поможет!
meta_query
массив, ваши ключи не должны иметь префиксmeta_
. Если вы используете$query->meta_key
,$query->meta_value
и т. Д., То они все равно должны сохранять префикс.