Автоматизация задач
Автоматически выполняйте GraphQL Persisted Query при возникновении события на сайте.
Создавайте автоматизации непосредственно через редактор WordPress. Триггером автоматизации является любой action hook WordPress, а действием — выполнение persisted query GraphQL.
Просмотр всех правил автоматизации
Нажав на «Automation Rules» в меню плагина, откроется список всех созданных правил автоматизации:

Создание нового правила автоматизации
Нажмите «Add New Automation Rule», чтобы добавить новую запись.
На экране редактора необходимо задать конфигурацию для:
- Триггера(ов) автоматизации
- Действия автоматизации

Действие автоматизации
Действие автоматизации указывает, какая persisted query GraphQL будет выполнена.
Настройте этот элемент со следующими параметрами:
Persisted Query: выберите, какую persisted query GraphQL выполнить (среди всех, имеющих статус publish или private)
Static GraphQL Variables: укажите строку JSON со значениями для переменных GraphQL в persisted query. Это статические значения.
Например:
{
"emailSubject": "New post on the site"
}Эти значения переопределяются «динамическими» переменными GraphQL (см. Триггер(ы) автоматизации ниже).
Operation name (необязательно): если persisted query содержит более одной операции, можно указать, какую из них выполнить (по умолчанию — последнюю).
Execute as user (необязательно): выполняет persisted query GraphQL от имени конкретного пользователя, авторизуясь под ним; укажите slug пользователя.

Триггер(ы) автоматизации
Триггер автоматизации указывает, какой action hook WordPress запустит выполнение Persisted Query. Можно указать более одного (например: чтобы реагировать только на редактирование записи или страницы, можно указать хуки edit_post_post и edit_post_page).
Настройте этот элемент со следующими параметрами:
Hook name: имя action hook WordPress.
Dynamic GraphQL Variables: укажите строку JSON, сопоставляющую переменные GraphQL с аргументами, передаваемыми в функцию хука. Эти динамические значения будут переданы в запрос во время выполнения.
Словарь JSON должен содержать имя переменной GraphQL в качестве ключа и позицию аргумента в action hook в качестве значения.
Например, хук draft_post (из post status transitions) передаёт $post_id в качестве первого аргумента. Тогда следующий JSON указывает, что переменная GraphQL $postID получит значение $post_id, переданного в хук:
{
"postID": 1
}(В этом примере 1 означает «значение 1-го аргумента хука draft_post».)
Если один и тот же ключ используется для «динамических» и «статических» переменных GraphQL (см. Действие автоматизации выше), динамические значения имеют приоритет.

Маппинг хуков WordPress
Существуют хуки WordPress, которые нельзя напрямую использовать в Automation Configurator, поскольку они передают PHP-объект через хук, который не может быть введён как переменная GraphQL.
Несколько таких хуков были смаппированы Gato GraphQL путём запуска нового хука с префиксом gatographql: и тем же именем хука, при этом соответствующий ID объекта передаётся как переменная, которую уже можно использовать как переменную GraphQL.
Например, хук WordPress draft_to_publish передаёт $post как переменную (типа WP_Post). Gato GraphQL маппирует этот хук как gatographql:draft_to_publish и передаёт $postId (типа int) как переменную.
В следующей таблице перечислены смаппированные хуки WordPress:
| Хук WordPress | Смаппированный хук Gato GraphQL |
|---|---|
{$old_status}_to_{$new_status} (передаёт WP_Post $post) | gatographql:{$old_status}_to_{$new_status} (передаёт int $postId, string $postType) |
Кроме того, Gato GraphQL повторно запускает ряд хуков WordPress с дополнительной информацией в имени хука, чтобы упростить перехват и автоматизацию конкретных событий.
Например, хуки, создающие, обновляющие и удаляющие мета-значения, запускаются с включением мета-ключа в имя хука. Таким образом, автоматизация может срабатывать при назначении миниатюры записи через хук gatographql:added_post_meta:_thumbnail_id.
Ниже перечислены дополнительные хуки Gato GraphQL:
| Исходный хук WordPress | Запускаемый хук Gato GraphQL |
|---|---|
{$old_status}_to_{$new_status}(Передаёт WP_Post $post) | gatographql:any_to_{$new_status}gatographql:{$old_status}_to_anygatographql:{$old_status}_to_{$new_status}:{$post_type}gatographql:any_to_{$new_status}:{$post_type}gatographql:{$old_status}_to_any:{$post_type}(Все передают int $postId, string $postType) |
created_term | gatographql:created_term:{$taxonomy} |
set_object_terms | gatographql:set_object_terms:{$taxonomy}gatographql:updated_object_terms:{$taxonomy} (Когда есть разница между старыми и новыми термами) |
added_post_meta | gatographql:added_post_meta:{$meta_key}gatographql:added_post_meta:{$post_type}:{$meta_key} (Также передаёт string $post_type как 5-й параметр) |
updated_post_meta | gatographql:updated_post_meta:{$meta_key}gatographql:updated_post_meta:{$post_type}:{$meta_key} (Также передаёт string $post_type как 5-й параметр) |
deleted_post_meta | gatographql:deleted_post_meta:{$meta_key}gatographql:deleted_post_meta:{$post_type}:{$meta_key} (Также передаёт string $post_type как 5-й параметр) |
added_term_meta | gatographql:added_term_meta:{$meta_key}gatographql:added_term_meta:{$taxonomy}:{$meta_key} (Также передаёт string $taxonomy как 5-й параметр) |
updated_term_meta | gatographql:updated_term_meta:{$meta_key}gatographql:updated_term_meta:{$taxonomy}:{$meta_key} (Также передаёт string $taxonomy как 5-й параметр) |
deleted_term_meta | gatographql:deleted_term_meta:{$meta_key}gatographql:deleted_term_meta:{$taxonomy}:{$meta_key} (Также передаёт string $taxonomy как 5-й параметр) |
Отладка проблем
Если автоматизация не выполнилась, возможно, в конфигурации автоматизации или при выполнении persisted query возникла ошибка.
Журналы выполнения
Подробности см. в разделе Устранение неполадок.
Журналы ошибок
Все проблемы конфигурации (например, некорректная строка JSON для переменных GraphQL или ссылка на удалённую persisted query) и ошибки выполнения (например, выброшенные исключения или записи errors в GraphQL-запросе) передаются в функцию PHP error_log и выводятся в журнал ошибок WordPress.
Эти записи журнала ошибок предваряются строкой [Gato GraphQL].