Использование запросов WP_Query в WordPress — часть 9 (аргументы для метаданных)

В сегодняшней части серии уроков по запросам WP_Query в ВордПресс мы будем рассматривать аргументы, которые можно использовать для получения публикаций по кастомным полям (специальным полям, метабоксам произвольных полей), или же мета-данным.

 

Что такое мета-данные публикаций в CMS WordPress?

С помощью этого функционала вы можете добавлять расширенные данные, параметры и т.п. для различных таксономий сайта, включая публикации, страницы, категории, теги, комментарии и т.п. Эти данные могут быть практически любого допустимого формата (текст, чекбокс, поле выбора, дата и т.д.). А поля, в которых можно добавлять эти данные, имеют разные названия, а именно: кастомные поля (custom fields), произвольные поля, дополнительные поля или просто мета-данные.

WordPress содержит три основных типа метаданных, которые хранятся отдельно в базе данных и с которыми работают следующие классы: мета публикаций (класс WP_Query), мета пользователей (класс WP_User_Query) и мета комментариев (класс WP_Comment_Query). Если вам нужно использовать только аргументы метаданных публикации в своем запросе (без других аргументов), вам достаточно будет использовать класс WP_Meta_Query, который является «вспомогательным классом» для WP_Query при фильтрации по метаданным. Он генерирует необходимый SQL запрос для поиска по мета-данным. Но основная работа «ложится на плечи» именно класса WP_Query.

 

Параметры аргументов запроса для получения публикаций по мета-данным

Итак, как вы видите, функционал метаданных публикаций дополнительно управляется отдельным классом под названием WP_Meta_Query. Это означает, что если вам нужны публикации только по их метаданным, тогда у вас на выбор есть два класса: WP_Meta_Query или WP_Query (который также имеет доступ к классу WP_Meta_Query). Основное отличие между этим классом и WP_Query состоит в том, что с первым вы можете создавать простые запросы и фильтрации на основе аргументов метаданных.

Сегодня будем рассматривать использование именно класса WP_Query, чтобы сформировать запрос публикаций по их мета-данным. А к основным аргументам и параметрам относятся следующие:

  • ключ мета-поля: meta_key (string)
  • значение мета-поля: meta_value (string)
  • значение (числовое) мета-поля: meta_value_num (number)
  • оператор для условной проверки мета-поля 'meta_value': meta_compare (string). Возможные значения: ‘=‘ (значение по умолчанию), ‘!=‘, ‘>‘, ‘>=‘, ‘<‘, ‘<=‘, ‘LIKE‘, ‘NOT LIKE‘, ‘IN‘, ‘NOT IN‘, ‘BETWEEN‘, ‘NOT BETWEEN‘, ‘NOT EXISTS‘, ‘REGEXP‘, ‘NOT REGEXP‘ или ‘RLIKE‘.

 

С этими параметрами вы можете сформировать простой запрос мета-поля, например так:

<?php
$args = array(
  // чтобы получить публикации с мета-полем по ключу key1 (независимо от его значения):
  'meta_key' => 'key1'
  // если требуется конкретное значение, добавьте соответствующий аргумент в запрос:
  // 'meta_value' => 'value1'
  // ! можно использовать даже запрос только по значению, независимо от ключа
);
?>

 

Параметры аргументов запроса для получения публикаций с использованием аргумента meta_compare

Вы уже заметили в перечне выше, что существует много условных параметров для аргумента meta_compare, не только расширяющего, но и немного усложняющего их использование. Поэтому давайте рассмотрим только наиболее часто используемые:

  • Параметр равно: =. Это значение по умолчанию
  • Параметр не равно: !=
  • Параметр больше, чем: >. Меньше чем: <
  • Параметр больше или равно: >=. Параметр меньше или равно: <=
  • Параметр LIKE для нахождения значения, подобного поисковому: можно использовать вместе с символами обобщения; игнорирует регистр значения

Далее рассмотрим некоторые практические примеры использования этого аргумента.

Например, чтобы исключить мета-поля с определенным значением ключа, воспользуйтесь кодом следующего вида:

<?php
$args = array(
  // поиск за исключением одного ключа
  'meta_key' => 'key1',
  'meta_compare' => '!=' // параметр не равно
  // если нужно исключить массив ключей, тогда используйте следующее сочетание параметров
  // 'meta_key' => 'key1, key2',
  // 'meta_compare' => 'NOT IN' // параметр исключения из массива
);
?>

 

В запросе можно использовать как числовые, так и нечисловые значения. К примеру, если у вас магазин на WordPress (WooCommerce), и вам нужно найти товары по цене в пределах 1500-1750 грн, вот как это может выглядеть:

<?php
$args = array(
  'meta_key' => 'someprodprice', // если товар имеет мета-поле с таким ключом
  // и имеет следующее значение (возможно и массив значений)
  'meta_value' => array (
    '1500',
    '1750'
  ),
  // использование параметра, позволяющего сравнить два числовых значения в диапазоне
  'meta_compare' => 'BETWEEN'
);
?>

 

Если вам нужно сформировать запрос с использованием нескольких кастомных полей (или нескольких условных операторов), то воспользуйтесь вложенным массивом. Это стало возможным, начиная с WordPress версии 4.1.

 

 

Вот и все на сегодня. Мы рассмотрели использование класса WP_Query для запроса публикаций по их метаданным (или пользовательским полям). Это должно придать вам большую гибкость при работе с этим популярным движком и используемой базой данных.

В следующем (заключительном) уроке мы подведем теоретические итоги по всем урокам и рассмотрим несколько практических примеров применения полученных знаний.

 

Recent Posts

Зигмунд Фрейд

Когда ты умер, ты об этом не знаешь. Только другим тяжело. То же самое, когда…

5 дней ago

Подбор игрового ноутбука для комфортного прохождения S.T.A.L.K.E.R 2

Как для человека, который прошел каждую из 3 оригинальных игр серии, и на относительно слабеньком…

7 дней ago

Как научиться менеджменту в Украине?

Если вы закончили школу и хотите посвятить себя процессу управления бизнесом (любого уровня), тогда перед…

1 неделя ago

Использование запросов WP_Query в WordPress — 10 практик применения

В сегодняшней 10-й, заключительной части серии уроков по запросам WP_Query в ВордПресс мы наконец-то закрепим…

1 неделя ago

Использование запросов WP_Query в WordPress — часть 8 (аргументы для таксономий)

Сегодняшняя часть серии уроков по запросам WP_Query в ВордПрессе будет посвящена рассмотрению аргументов, которые можно…

2 недели ago

Использование запросов WP_Query в WordPress — часть 7 (аргументы для получения категорий, тегов)

Этот практический урок будет посвящен рассмотрению аргументов, которые можно использовать для получения публикаций определенных категорий…

2 недели ago