Automation
AutomationConfigurador de Automatización

Configurador de Automatización

Ejecuta automáticamente una Persisted Query de GraphQL cuando ocurre algún evento en el sitio.

El módulo Configurador de Automatización proporciona una interfaz de usuario "automatizadora" para crear automatizaciones mediante el editor de WordPress.

El disparador de automatización es cualquier action hook de WordPress, y la acción es la ejecución de una persisted query de GraphQL.

Se proporciona un Custom Post Type "Reglas de Automatización" para crear automatizaciones. Al crear una nueva entrada, debemos proporcionar la configuración para:

  • Disparador(es) de automatización
  • Acción de automatización
Editor de Regla de Automatización
Editor de Regla de Automatización

Acción de automatización

La acción de automatización indica qué persisted query de GraphQL se ejecutará.

Configura este elemento con los siguientes campos:

Persisted Query: Selecciona qué persisted query de GraphQL ejecutar (de entre todas las que tienen estado publish o private).

Variables estáticas de GraphQL: Proporciona una cadena JSON con valores para las variables de GraphQL en la persisted query. Estos son valores estáticos.

Por ejemplo:

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

Estos valores son sobrescritos por las variables "dinámicas" de GraphQL (consulta Disparador(es) de automatización más abajo).

Nombre de la operación (opcional): Si la persisted query contiene más de una operación, puedes indicar cuál ejecutar (por defecto, es la última).

Ejecutar como usuario (opcional): Ejecuta la persisted query de GraphQL iniciando sesión como un usuario específico, proporcionando el slug del usuario.

Regla de Automatización - Ejecución de Persisted Query
Regla de Automatización - Ejecución de Persisted Query

Disparador(es) de automatización

Un disparador de automatización indica qué action hook de WordPress disparará la ejecución de la Persisted Query. Podemos proporcionar más de uno (por ejemplo: para reaccionar solo a la edición de una entrada o página, podemos proporcionar los hooks edit_post_post y edit_post_page).

Configura este elemento con los siguientes campos:

Nombre del hook: El nombre del action hook de WordPress.

Variables dinámicas de GraphQL: Proporciona una cadena JSON que mapea las variables de GraphQL a los argumentos proporcionados a la función del hook. Estos valores dinámicos se proporcionarán entonces a la consulta en tiempo de ejecución.

El diccionario JSON debe contener el nombre de la variable de GraphQL como clave, y la posición del argumento en el action hook como valor.

Por ejemplo, el hook draft_post (de las transiciones de estado de entrada) proporciona el $post_id como primer argumento. Entonces, el siguiente JSON indica que la variable de GraphQL $postID recibirá el valor de $post_id pasado al hook:

{
  "postID": 1
}

(En este ejemplo, 1 significa "valor del 1er argumento de draft_post".)

Si se utiliza la misma clave para las variables "dinámicas" y "estáticas" de GraphQL (consulta Acción de automatización más arriba), entonces los valores dinámicos tienen prioridad.

Regla de Automatización - Action hook
Regla de Automatización - Action hook

Mapeo de hooks de WordPress

Hay hooks de WordPress que no pueden usarse directamente en el Configurador de Automatización, porque proporcionan un objeto PHP mediante el hook, que no puede introducirse como una variable de GraphQL.

Varios de estos hooks han sido mapeados por Gato GraphQL, disparando un nuevo hook con el prefijo gatographql: seguido del mismo nombre del hook, y pasando el ID del objeto correspondiente como variable, que puede introducirse como una variable de GraphQL.

Por ejemplo, el hook de WordPress draft_to_publish pasa el $post como variable (de tipo WP_Post). Gato GraphQL mapea este hook como gatographql:draft_to_publish y pasa el $postId (de tipo int) como variable.

La siguiente tabla enumera los hooks de WordPress mapeados:

Hook de WordPressHook mapeado por Gato GraphQL
{$old_status}_to_{$new_status} (pasando WP_Post $post)gatographql:{$old_status}_to_{$new_status} (pasando int $postId, string $postType)

Además, Gato GraphQL vuelve a disparar varios hooks de WordPress con información adicional en el nombre del hook, para facilitar la captura y automatización de eventos específicos.

Por ejemplo, los hooks que crean, actualizan y eliminan valores meta se disparan conteniendo la clave meta como parte del nombre del hook. Así, una automatización puede dispararse cuando se asigna una imagen destacada a una entrada, en el hook gatographql:added_post_meta:_thumbnail_id.

Estos son los hooks adicionales de Gato GraphQL:

Hook de WordPress origenHook de Gato GraphQL disparado
{$old_status}_to_{$new_status}
(Pasando 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 pasando int $postId, string $postType)
created_termgatographql:created_term:{$taxonomy}
set_object_termsgatographql:set_object_terms:{$taxonomy}
gatographql:updated_object_terms:{$taxonomy} (Cuando hay una diferencia entre los términos antiguos y nuevos)
added_post_metagatographql:added_post_meta:{$meta_key}
gatographql:added_post_meta:{$post_type}:{$meta_key} (También pasando string $post_type como 5º parámetro)
updated_post_metagatographql:updated_post_meta:{$meta_key}
gatographql:updated_post_meta:{$post_type}:{$meta_key} (También pasando string $post_type como 5º parámetro)
deleted_post_metagatographql:deleted_post_meta:{$meta_key}
gatographql:deleted_post_meta:{$post_type}:{$meta_key} (También pasando string $post_type como 5º parámetro)
added_term_metagatographql:added_term_meta:{$meta_key}
gatographql:added_term_meta:{$taxonomy}:{$meta_key} (También pasando string $taxonomy como 5º parámetro)
updated_term_metagatographql:updated_term_meta:{$meta_key}
gatographql:updated_term_meta:{$taxonomy}:{$meta_key} (También pasando string $taxonomy como 5º parámetro)
deleted_term_metagatographql:deleted_term_meta:{$meta_key}
gatographql:deleted_term_meta:{$taxonomy}:{$meta_key} (También pasando string $taxonomy como 5º parámetro)

Depurando problemas

Si la automatización no se ha ejecutado, puede haber un error con la configuración de la automatización o con la ejecución de la persisted query.

Registros de ejecución

Consulta Solución de problemas para más detalles.

Registros de errores

Todos los problemas de configuración (como una cadena JSON malformada para las variables de GraphQL, o apuntar a una persisted query que ha sido eliminada) y los errores de ejecución (como excepciones lanzadas, o entradas errors en la consulta GraphQL) se envían al error_log de la función PHP, por lo que se imprimen en el registro de errores de WordPress.

Estos registros de errores llevan el prefijo [Gato GraphQL].

Ejemplos

Estos son algunos ejemplos de cómo podemos usarlo:

  • Crear una imagen destacada para nuevas entradas usando IA
  • Añadir un bloque obligatorio a la entrada cuando se publica
  • Reemplazar http por https en todas las fuentes y enlaces de imágenes cuando se actualiza una entrada
  • Enviar un correo electrónico al administrador cuando hay una nueva entrada
  • Enviar un correo electrónico al usuario cuyo comentario tiene una nueva respuesta
  • [Multisitio] Traducir una nueva entrada a diferentes idiomas y añadir las entradas traducidas a cada sitio
  • Ejecutar una acción en un servicio externo (por ejemplo: compartir automáticamente nuevas entradas en Facebook)

Por ejemplo, al crear una nueva entrada con estado draft, la regla de automatización predefinida Añadir bloque de comentarios a nueva entrada comprueba si el bloque core/comments está presente y, si no, lo añade al final de la entrada:

Insertando automáticamente el bloque de comentarios en nuevas entradas en 'draft'
Insertando automáticamente el bloque de comentarios en nuevas entradas en 'draft'