Настройка плагина
Настройка плагинаОпределение списка разрешённых/запрещённых мета-значений

Определение списка разрешённых/запрещённых мета-значений

Мы можем получать мета-значения для пользовательских записей, пользователей, комментариев и таксономий (тегов и категорий), запрашивая поля 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

Мы также можем фильтровать результаты для пользовательских записей, пользователей, комментариев и таксономий (тегов и категорий) на основе мета-данных — через поле ввода metaQuery.

Как при запросе, так и при фильтрации мета-значения могут быть публичными или приватными. Например, мета пользователя включает запись wp_capabilities, которая является приватной, тогда как description — публичной. А last_name может быть публичным или приватным в зависимости от приложения.

Плагин Gato GraphQL не навязывает, какие мета-ключи являются публичными, а какие — приватными; это необходимо настроить явно. По умолчанию список разрешённых мета-ключей пуст.

Ответ мета-значения

При запросе мета-ключа, доступ к которому не разрешён на соответствующей странице настроек, запрос возвращает ошибку.

Например, при выполнении этого запроса:

{
  post(by: { id: 1 }) {
    id
    metaValue(key: "nothingHere")
  }
}

Возвращается:

{
  "errors": [
    {
      "message": "There is no meta with key 'nothingHere'",
      "extensions": {
        "type": "Post",
        "id": 1,
        "field": "metaValue(key:\"nothingHere\")"
      }
    }
  ],
  "data": {
    "post": {
      "id": 1,
      "metaValue": null
    }
  }
}

Если мета-ключ не существует для запрошенного объекта или его значение пустое, ответ равен null. В противном случае ответ содержит мета-значение.

Настройка разрешённых мета-ключей

Это описание для модуля «Custom Post Meta». Для модулей Users, Comments и Taxonomies процедура аналогична.

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

Каждая запись может быть:

  • Регулярным выражением (regex), если она заключена в / или #, либо
  • Полным мета-ключом — в остальных случаях

Например, любая из этих записей соответствует мета-ключу "_edit_last":

  • _edit_last
  • /_edit_.*/
  • #_edit_([a-zA-Z]*)#

Существует 2 места для этой настройки, в порядке приоритета:

  1. Пользовательское: в соответствующей конфигурации схемы
  2. Общее: на странице настроек

В конфигурации схемы, применённой к эндпоинту, выберите опцию "Use custom configuration" и введите нужные записи:

Определение записей в конфигурации схемы

В противном случае будут использованы записи, заданные на вкладке «Schema Custom Post Meta» в настройках:

Определение записей в настройках
Определение записей в настройках

Существует 2 режима поведения — «Allow access» и «Deny access»:

  • Allow access: доступны только настроенные записи, все остальные недоступны
  • Deny access: настроенные записи недоступны, все остальные доступны
Определение режима доступа
Определение режима доступа