Мета-значения
Чтобы получать данные и фильтровать по мета-значениям, их мета-ключи должны быть добавлены в список разрешённых.
Мы можем получать мета-значения для пользовательских записей, пользователей, комментариев и таксономий (тегов и категорий), выполняя queries к полям metaValue (для одного значения) и metaValues (для массива значений) из соответствующего типа:
Post.metaValuePost.metaValuesGenericCustomPost.metaValueGenericCustomPost.metaValuesUser.metaValueUser.metaValuesComment.metaValueComment.metaValuesPostTag.metaValuePostTag.metaValuesPostCategory.metaValuePostCategory.metaValuesGenericTag.metaValueGenericTag.metaValuesGenericCategory.metaValueGenericCategory.metaValues
Запрос нескольких мета-значений одновременно
Мы можем получить несколько мета-записей в виде объекта JSON с помощью поля meta (для тех же типов, что указаны выше).
Объект JSON содержит:
- Ключ: мета-ключ
- Значение: список значений (если мета-значение является скаляром, оно возвращается как список из 1 элемента)
Запрос мета-ключей
Мы можем получить список всех разрешённых мета-ключей сущности с помощью поля metaKeys (для тех же типов, что указаны выше).
Это поле является «чувствительным» элементом данных.
Фильтрация по мета
Пользовательские записи, комментарии, пользователи и таксономии (теги и категории) также могут быть отфильтрованы по мета с использованием входного параметра metaQuery.
Этот входной параметр предлагает улучшение по сравнению с тем, как передаются аргументы meta_query (в функции get_posts, get_users и др.): в схеме GraphQL строго применяется проверка типов и предоставляются только те комбинации, которые имеют смысл.
Это достигается благодаря использованию поля ввода «oneof» compareBy, которое предлагает 4 варианта. В зависимости от выбранного варианта для сравнения могут использоваться разные операторы:
Входной параметр compareBy | Возможные операторы |
|---|---|
1. key | EXISTSNOT EXISTS |
2. numericValue | =!=>>=<\<= |
3. stringValue | =!=LIKENOT LIKEREGEXPNOT REGEXPRLIKE |
4. arrayValue | INNOT INBETWEENNOT BETWEEN |
Кроме того, при сравнении по key нет необходимости указывать входной параметр value.
Мы можем передавать несколько элементов в metaQuery и определять, применять ли условие AND или OR, передав входной параметр relation в первом элементе списка.