Управление WordPress
Управление WordPressАвтоматизация задач

Автоматизация задач

Автоматически выполняйте 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 пользователя.

Правило автоматизации - Выполнение Persisted Query
Правило автоматизации - Выполнение Persisted Query

Триггер(ы) автоматизации

Триггер автоматизации указывает, какой 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 (см. Действие автоматизации выше), динамические значения имеют приоритет.

Правило автоматизации - Action hook
Правило автоматизации - Action hook

Маппинг хуков 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_any
gatographql:{$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_termgatographql:created_term:{$taxonomy}
set_object_termsgatographql:set_object_terms:{$taxonomy}
gatographql:updated_object_terms:{$taxonomy} (Когда есть разница между старыми и новыми термами)
added_post_metagatographql:added_post_meta:{$meta_key}
gatographql:added_post_meta:{$post_type}:{$meta_key} (Также передаёт string $post_type как 5-й параметр)
updated_post_metagatographql:updated_post_meta:{$meta_key}
gatographql:updated_post_meta:{$post_type}:{$meta_key} (Также передаёт string $post_type как 5-й параметр)
deleted_post_metagatographql:deleted_post_meta:{$meta_key}
gatographql:deleted_post_meta:{$post_type}:{$meta_key} (Также передаёт string $post_type как 5-й параметр)
added_term_metagatographql:added_term_meta:{$meta_key}
gatographql:added_term_meta:{$taxonomy}:{$meta_key} (Также передаёт string $taxonomy как 5-й параметр)
updated_term_metagatographql:updated_term_meta:{$meta_key}
gatographql:updated_term_meta:{$taxonomy}:{$meta_key} (Также передаёт string $taxonomy как 5-й параметр)
deleted_term_metagatographql: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].