Automação
AutomaçãoConfigurador de Automação

Configurador de Automação

Executa automaticamente uma Persisted Query GraphQL quando algum evento ocorre no site.

O módulo Configurador de Automação fornece uma interface de usuário "de automação" para criar automações por meio do editor do WordPress.

O gatilho da automação é qualquer action hook do WordPress, e a ação é a execução de uma query persistida GraphQL.

Um Custom Post Type "Regras de Automação" é fornecido para criar automações. Ao criar uma nova entrada, devemos fornecer a configuração para:

  • Gatilho(s) da automação
  • Ação da automação
Editor de Regra de Automação
Editor de Regra de Automação

Ação da automação

A ação da automação indica qual query persistida GraphQL será executada.

Configure este item com os seguintes elementos:

Persisted Query: Selecione qual query persistida GraphQL executar (entre todas as que possuem status publish ou private).

Variáveis GraphQL estáticas: Forneça uma string JSON com os valores das variáveis GraphQL na query persistida. Esses são valores estáticos.

Por exemplo:

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

Esses valores são substituídos pelas variáveis GraphQL "dinâmicas" (veja Gatilho(s) da automação abaixo).

Nome da operação (opcional): Se a query persistida contiver mais de uma operação, você pode indicar qual executar (por padrão, é a última).

Executar como usuário (opcional): Executa a query persistida GraphQL estando logado como um usuário específico, fornecendo o slug do usuário.

Regra de Automação - Execução da Persisted Query
Regra de Automação - Execução da Persisted Query

Gatilho(s) da automação

Um gatilho de automação indica qual action hook do WordPress acionará a execução da Persisted Query. Podemos fornecer mais de um (ex.: para reagir apenas à edição de um post ou página, podemos fornecer os hooks edit_post_post e edit_post_page).

Configure este item com os seguintes elementos:

Nome do hook: O nome do action hook do WordPress.

Variáveis GraphQL dinâmicas: Forneça uma string JSON mapeando variáveis GraphQL para os argumentos fornecidos à função do hook. Esses valores dinâmicos serão então fornecidos à query em tempo de execução.

O dicionário JSON deve conter o nome da variável GraphQL como chave, e a posição do argumento no action hook como valor.

Por exemplo, o hook draft_post (das transições de status do post) fornece o $post_id como primeiro argumento. Assim, o seguinte JSON indica que a variável GraphQL $postID receberá o valor de $post_id passado ao hook:

{
  "postID": 1
}

(Neste exemplo, 1 significa "valor do 1º argumento de draft_post".)

Se a mesma chave for usada para as variáveis GraphQL "dinâmicas" e "estáticas" (veja Ação da automação acima), os valores dinâmicos têm prioridade.

Regra de Automação - Action hook
Regra de Automação - Action hook

Mapeamento de hooks do WordPress

Existem hooks do WordPress que não podem ser usados diretamente no Configurador de Automação, porque fornecem um objeto PHP via hook, que não pode ser inserido como variável GraphQL.

Vários desses hooks foram mapeados pelo Gato GraphQL, disparando um novo hook com prefixo gatographql: seguido do mesmo nome do hook, e passando o ID do objeto correspondente como variável, que pode ser inserida como variável GraphQL.

Por exemplo, o hook do WordPress draft_to_publish passa o $post como variável (do tipo WP_Post). O Gato GraphQL mapeia este hook como gatographql:draft_to_publish e passa o $postId (do tipo int) como variável.

A tabela a seguir lista os hooks do WordPress mapeados:

Hook do WordPressHook mapeado pelo Gato GraphQL
{$old_status}_to_{$new_status} (passando WP_Post $post)gatographql:{$old_status}_to_{$new_status} (passando int $postId, string $postType)

Além disso, o Gato GraphQL re-dispara vários hooks do WordPress com informações extras no nome do hook, para facilitar a captura e automação de eventos específicos.

Por exemplo, hooks que criam, atualizam e excluem valores meta são disparados contendo a meta key como parte do nome do hook. Assim, uma automação pode ser acionada quando uma imagem destacada é atribuída a um post, no hook gatographql:added_post_meta:_thumbnail_id.

Estes são os hooks adicionais do Gato GraphQL:

Hook WordPress de origemHook Gato GraphQL disparado
{$old_status}_to_{$new_status}
(Passando 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}
(Todos passando int $postId, string $postType)
created_termgatographql:created_term:{$taxonomy}
set_object_termsgatographql:set_object_terms:{$taxonomy}
gatographql:updated_object_terms:{$taxonomy} (Quando há uma diferença entre os termos antigos e os novos)
added_post_metagatographql:added_post_meta:{$meta_key}
gatographql:added_post_meta:{$post_type}:{$meta_key} (Também passando string $post_type como 5º parâmetro)
updated_post_metagatographql:updated_post_meta:{$meta_key}
gatographql:updated_post_meta:{$post_type}:{$meta_key} (Também passando string $post_type como 5º parâmetro)
deleted_post_metagatographql:deleted_post_meta:{$meta_key}
gatographql:deleted_post_meta:{$post_type}:{$meta_key} (Também passando string $post_type como 5º parâmetro)
added_term_metagatographql:added_term_meta:{$meta_key}
gatographql:added_term_meta:{$taxonomy}:{$meta_key} (Também passando string $taxonomy como 5º parâmetro)
updated_term_metagatographql:updated_term_meta:{$meta_key}
gatographql:updated_term_meta:{$taxonomy}:{$meta_key} (Também passando string $taxonomy como 5º parâmetro)
deleted_term_metagatographql:deleted_term_meta:{$meta_key}
gatographql:deleted_term_meta:{$taxonomy}:{$meta_key} (Também passando string $taxonomy como 5º parâmetro)

Depuração de problemas

Se a automação não foi executada, pode haver um erro na configuração da automação ou na execução da query persistida.

Logs de execução

Consulte Solução de problemas para mais detalhes.

Logs de erros

Todos os problemas de configuração (como uma string JSON malformada para as variáveis GraphQL, ou um apontamento para uma query persistida que foi excluída) e erros de execução (como exceções lançadas, ou entradas errors na query GraphQL) são enviados para a função PHP error_log, sendo então registrados no log de erros do WordPress.

Esses logs de erros são prefixados com a string [Gato GraphQL].

Exemplos

Estes são alguns exemplos de como podemos utilizá-lo:

  • Criar uma imagem destacada para novos posts usando IA
  • Adicionar um bloco obrigatório ao post quando publicado
  • Substituir http por https em todas as fontes de imagem e links quando um post é atualizado
  • Enviar um e-mail ao administrador quando houver um novo post
  • Enviar um e-mail ao usuário cujo comentário recebeu uma nova resposta
  • [Multisite] Traduzir um novo post para diferentes idiomas e adicionar os posts traduzidos a cada site
  • Executar uma ação em um serviço externo (ex.: compartilhar automaticamente novos posts no Facebook)

Por exemplo, ao criar um novo post com status draft, a regra de automação predefinida Adicionar bloco de comentários ao novo post verifica se o bloco core/comments está presente e, caso não esteja, o adiciona ao final do post:

Inserção automática do bloco de comentários em novos posts com status 'draft'
Inserção automática do bloco de comentários em novos posts com status 'draft'