На этом сайте уже есть отдельный и довольно подробный урок по meta_query. Если вам что-то здесь не особо понятно, то прямо рекомендую начать с него. А если и там ничего не понятно, то начинаем с урока про WP_Query 😁
В версии WordPress 5.3 класс WP_Meta_Query получил обновление в виде нового параметра compare_key
. Как вы возможно помните, у нас с вами уже был параметр compare
, который позволял производить сравнение значения произвольного поля с каким-то нашим заданным значением. Например убеждаемся, что цвет либо синий либо белый:
array( 'key' => 'color', 'value' => array('синий','белый'), 'compare' => 'IN' ),
Теперь же мы можем так же сравнивать и ключи, например в примере ниже белым должен быть либо фон либо цвет текста:
array( 'key' => array( 'background_color', 'text_color' ), 'compare_key' => 'IN', 'value' => 'белый' ),
Ну или посложнее:
array( 'key' => array( 'background_color', 'text_color' ), 'compare_key' => 'IN', 'value' => array( 'синий','белый'), 'compare' => 'IN' ),
Итак параметр compare_key
приобретает следующие возможные значения, практически такие же, как и у параметра compare
: =
, LIKE
, !=
, IN
, NOT IN
, NOT LIKE
, RLIKE
, REGEXP
, NOT REGEXP
,EXISTS
и NOT EXISTS
.
Также имейте ввиду, что:
- Несмотря на то, что поддержка
EXISTS
иNOT EXISTS
тоже была добавлена, но их действие дляcompare_key
точно такое же, как=
и!=
соответственно. - Операторы регулярных выражений MySQL типо
RLIKE
,REGEXP
,NOT REGEXP
по умолчанию НЕ чувствительны к регистру. Однако это возможно исправить, если вкинуть в вашWP_Meta_Query
также и параметрtype_key
равныйBINARY
(такая же возможность есть и для значений ключей, название параметраtype
). - И ещё кое-что – новыe параметры конечно же доступны и напрямую для WP_Query с префиксами
meta_
, а именно:meta_compare_key
andmeta_type_key
.
По теме
Источник: misha.blog