Работа с
Работа сМета-значения

Мета-значения

Чтобы получать данные и фильтровать по мета-значениям, их мета-ключи должны быть добавлены в список разрешённых.

Мы можем получать мета-значения для пользовательских записей, пользователей, комментариев и таксономий (тегов и категорий), выполняя queries к полям metaValue (для одного значения) и metaValues (для массива значений) из соответствующего типа:

  • Post.metaValue
  • Post.metaValues
  • GenericCustomPost.metaValue
  • GenericCustomPost.metaValues
  • User.metaValue
  • User.metaValues
  • Comment.metaValue
  • Comment.metaValues
  • PostTag.metaValue
  • PostTag.metaValues
  • PostCategory.metaValue
  • PostCategory.metaValues
  • GenericTag.metaValue
  • GenericTag.metaValues
  • GenericCategory.metaValue
  • GenericCategory.metaValues

Запрос нескольких мета-значений одновременно

Мы можем получить несколько мета-записей в виде объекта JSON с помощью поля meta (для тех же типов, что указаны выше).

Объект JSON содержит:

  • Ключ: мета-ключ
  • Значение: список значений (если мета-значение является скаляром, оно возвращается как список из 1 элемента)

Запрос мета-ключей

Мы можем получить список всех разрешённых мета-ключей сущности с помощью поля metaKeys (для тех же типов, что указаны выше).

Это поле является «чувствительным» элементом данных.

Фильтрация по мета

Пользовательские записи, комментарии, пользователи и таксономии (теги и категории) также могут быть отфильтрованы по мета с использованием входного параметра metaQuery.

Этот входной параметр предлагает улучшение по сравнению с тем, как передаются аргументы meta_query (в функции get_posts, get_users и др.): в схеме GraphQL строго применяется проверка типов и предоставляются только те комбинации, которые имеют смысл.

Это достигается благодаря использованию поля ввода «oneof» compareBy, которое предлагает 4 варианта. В зависимости от выбранного варианта для сравнения могут использоваться разные операторы:

Входной параметр compareByВозможные операторы
1. keyEXISTS
NOT EXISTS
2. numericValue=
!=
>
>=
<
\<=
3. stringValue=
!=
LIKE
NOT LIKE
REGEXP
NOT REGEXP
RLIKE
4. arrayValueIN
NOT IN
BETWEEN
NOT BETWEEN

Кроме того, при сравнении по key нет необходимости указывать входной параметр value.

Мы можем передавать несколько элементов в metaQuery и определять, применять ли условие AND или OR, передав входной параметр relation в первом элементе списка.