Автоматизация
АвтоматизацияКонфигуратор автоматизации

Конфигуратор автоматизации

Автоматически выполняет GraphQL Persisted Query при наступлении какого-либо события на сайте.

Модуль Конфигуратор автоматизации предоставляет пользовательский интерфейс «автоматизатора» для создания автоматизаций через редактор WordPress.

Триггером автоматизации является любой action hook WordPress, а действием — выполнение GraphQL persisted query.

Для создания автоматизаций предусмотрен Custom Post Type «Правила автоматизации». При создании новой записи необходимо задать конфигурацию для:

  • Триггер(ы) автоматизации
  • Действие автоматизации
Редактор правила автоматизации
Редактор правила автоматизации

Действие автоматизации

Действие автоматизации указывает, какая GraphQL persisted query будет выполнена.

Настройте этот элемент со следующими полями:

Persisted Query: Выберите, какую GraphQL persisted query выполнить (из всех со статусом publish или private).

Статические переменные GraphQL: Укажите строку JSON со значениями для переменных GraphQL в persisted query. Это статические значения.

Например:

{
  "emailSubject": "New post on the site"
}

Эти значения переопределяются «динамическими» переменными GraphQL (см. Триггер(ы) автоматизации ниже).

Название операции (необязательно): Если persisted query содержит более одной операции, можно указать, какую из них выполнить (по умолчанию — последнюю).

Выполнить от имени пользователя (необязательно): Выполняет GraphQL persisted query, будучи авторизованным как конкретный пользователь; укажите slug пользователя.

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

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

Триггер автоматизации указывает, какой action hook WordPress инициирует выполнение Persisted Query. Можно указать более одного (например: чтобы реагировать только на редактирование записи или страницы, можно указать хуки edit_post_post и edit_post_page).

Настройте этот элемент со следующими полями:

Название хука: Название action hook WordPress.

Динамические переменные GraphQL: Укажите строку JSON, сопоставляющую переменные GraphQL с аргументами, передаваемыми в функцию хука. Эти динамические значения затем будут переданы в запрос во время выполнения.

Словарь JSON должен содержать имя переменной GraphQL в качестве ключа и позицию аргумента в action hook в качестве значения.

Например, хук draft_post (из переходов статусов записей) передаёт $post_id как первый аргумент. Тогда следующий JSON указывает, что переменная GraphQL $postID получит значение $post_id, переданного в хук:

{
  "postID": 1
}

(В этом примере 1 означает «значение 1-го аргумента draft_post».)

Если один и тот же ключ используется для «динамических» и «статических» переменных GraphQL (см. Действие автоматизации выше), динамические значения имеют приоритет.

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

Маппинг хуков WordPress

Существуют хуки WordPress, которые нельзя использовать непосредственно в Конфигураторе автоматизации, поскольку они передают 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].

Примеры

Вот несколько примеров того, как это можно использовать:

  • Создание миниатюры для новых записей с помощью ИИ
  • Добавление обязательного блока к записи при публикации
  • Замена http на https во всех источниках изображений и ссылках при обновлении записи
  • Отправка письма администратору при появлении новой записи
  • Отправка письма пользователю, чей комментарий получил новый ответ
  • [Мультисайт] Перевод новой записи на разные языки и добавление переведённых записей на каждый сайт
  • Выполнение действия во внешнем сервисе (например: автоматическая публикация новых записей в Facebook)

Например, при создании новой записи со статусом draft предустановленное правило автоматизации Добавить блок комментариев к новой записи проверяет наличие блока core/comments и, если он отсутствует, добавляет его в конец записи:

Автоматическая вставка блока комментариев в новые записи со статусом «draft»
Автоматическая вставка блока комментариев в новые записи со статусом «draft»