Использование параметра compare_key в WP_Meta_Query

На этом сайте уже есть отдельный и довольно подробный урок по 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 типо RLIKEREGEXPNOT REGEXP по умолчанию НЕ чувствительны к регистру. Однако это возможно исправить, если вкинуть в ваш WP_Meta_Query также и параметр type_key равный BINARY (такая же возможность есть и для значений ключей, название параметра type).
  • И ещё кое-что – новыe параметры конечно же доступны и напрямую для WP_Query с префиксами meta_, а именно: meta_compare_key and meta_type_key.

По теме

Миша

В последние годы я долго не знал, что мне делать с сайтом misha.blog, ведь он практически не приносит никакого профита, но недавно я осознал, что моя миссия – способствовать распространению WordPress. Ведь WordPress – это лучший движок для разработки сайтов – как для тех, кто готов использовать заложенную структуру этой CMS, так и для тех, кто предпочитает headless решения.

Сам же я впервые познакомился с WordPress в 2009 году. Организатор WordCamp. Преподаватель в школах Epic Skills и LoftSchool.

Если вам нужна помощь с вашим сайтом или может даже разработка с нуля на WordPress / WooCommerce — пишите. Я и моя команда сделаем вам всё на лучшем уровне.

Оставить комментарий

Если вы хотите добавить код, не забудьте обернуть его в <pre lang="php"></pre>, если же код – меньше одной строчки, то можно и в <code></code>.