자동화 설정 도구
사이트에서 어떤 이벤트가 발생했을 때 GraphQL Persisted Query를 자동으로 실행합니다.
자동화 설정 도구 모듈은 "자동화기" 사용자 인터페이스를 제공하며, WordPress 편집기를 통해 자동화를 생성할 수 있습니다.
자동화 트리거는 WordPress 액션 훅이며, 액션은 GraphQL persisted query의 실행입니다.
자동화를 생성하기 위해 커스텀 포스트 타입 "자동화 규칙"이 제공됩니다. 새 항목을 생성할 때 다음 항목에 대한 설정을 제공해야 합니다:
- 자동화 트리거
- 자동화 액션

자동화 액션
자동화 액션은 어떤 GraphQL persisted query가 실행될지를 나타냅니다.
이 항목을 다음 요소로 설정하세요:
Persisted Query: 실행할 GraphQL persisted query를 선택합니다 (상태가 publish 또는 private인 모든 항목 중에서 선택).
정적 GraphQL 변수: persisted query의 GraphQL 변수에 대한 값을 JSON 문자열로 지정합니다. 이는 정적 값입니다.
예를 들어:
{
"emailSubject": "New post on the site"
}이 값들은 "동적" GraphQL 변수에 의해 재정의됩니다 (아래의 자동화 트리거 참조).
오퍼레이션 이름 (선택 사항): persisted query에 여러 오퍼레이션이 포함된 경우, 실행할 오퍼레이션을 지정할 수 있습니다 (기본값은 마지막 오퍼레이션).
사용자로 실행 (선택 사항): 특정 사용자로 로그인한 상태에서 GraphQL persisted query를 실행합니다. 사용자 슬러그를 입력하세요.

자동화 트리거
자동화 트리거는 어떤 WordPress 액션 훅이 Persisted Query의 실행을 트리거할지를 나타냅니다. 여러 개를 지정할 수도 있습니다 (예: 게시글 또는 페이지 편집 시에만 반응하려면 edit_post_post와 edit_post_page 훅을 지정하면 됩니다).
이 항목을 다음 요소로 설정하세요:
훅 이름: WordPress 액션 훅의 이름.
동적 GraphQL 변수: GraphQL 변수를 훅 함수에 전달되는 인수에 매핑하는 JSON 문자열을 지정합니다. 이 동적 값들은 실행 시 쿼리에 전달됩니다.
JSON 딕셔너리에는 GraphQL 변수 이름을 키로, 액션 훅의 인수 위치를 값으로 포함해야 합니다.
예를 들어, 훅 draft_post(게시글 상태 전환에서)는 첫 번째 인수로 $post_id를 전달합니다. 다음 JSON은 GraphQL 변수 $postID가 훅에 전달되는 $post_id의 값을 받는다는 것을 나타냅니다:
{
"postID": 1
}(이 예에서 1은 "draft_post의 첫 번째 인수의 값"을 의미합니다.)
"동적"과 "정적" GraphQL 변수(위의 자동화 액션 참조)에 동일한 키가 사용된 경우, 동적 값이 우선합니다.

WordPress 훅 매핑
자동화 설정 도구에서 직접 사용할 수 없는 WordPress 훅이 있습니다. 이러한 훅들은 PHP 객체를 훅을 통해 전달하기 때문에 GraphQL 변수로 입력할 수 없기 때문입니다.
이러한 훅들 중 일부는 Gato GraphQL에 의해 매핑되었으며, gatographql: 접두사와 동일한 훅 이름을 가진 새 훅을 트리거하고, GraphQL 변수로 입력할 수 있는 해당 객체 ID를 변수로 전달합니다.
예를 들어, WordPress 훅 draft_to_publish는 (WP_Post 타입의) $post를 변수로 전달합니다. Gato GraphQL은 이 훅을 gatographql:draft_to_publish로 매핑하고, (int 타입의) $postId를 변수로 전달합니다.
다음 표는 매핑된 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} (5번째 파라미터로 string $post_type도 전달) |
updated_post_meta | gatographql:updated_post_meta:{$meta_key}gatographql:updated_post_meta:{$post_type}:{$meta_key} (5번째 파라미터로 string $post_type도 전달) |
deleted_post_meta | gatographql:deleted_post_meta:{$meta_key}gatographql:deleted_post_meta:{$post_type}:{$meta_key} (5번째 파라미터로 string $post_type도 전달) |
added_term_meta | gatographql:added_term_meta:{$meta_key}gatographql:added_term_meta:{$taxonomy}:{$meta_key} (5번째 파라미터로 string $taxonomy도 전달) |
updated_term_meta | gatographql:updated_term_meta:{$meta_key}gatographql:updated_term_meta:{$taxonomy}:{$meta_key} (5번째 파라미터로 string $taxonomy도 전달) |
deleted_term_meta | gatographql:deleted_term_meta:{$meta_key}gatographql:deleted_term_meta:{$taxonomy}:{$meta_key} (5번째 파라미터로 string $taxonomy도 전달) |
문제 디버깅
자동화가 실행되지 않은 경우, 자동화 설정 또는 persisted query 실행에 오류가 있을 수 있습니다.
실행 로그
자세한 내용은 문제 트러블슈팅을 참조하세요.
오류 로그
모든 설정 문제(GraphQL 변수의 JSON 문자열이 잘못 형성되었거나 삭제된 persisted query를 참조하는 경우 등)와 실행 오류(예외 발생 또는 GraphQL 쿼리의 errors 항목 등)는 PHP 함수의 error_log로 전송되므로 WordPress 오류 로그에 출력됩니다.
이러한 오류 로그에는 [Gato GraphQL]이라는 문자열이 접두사로 붙습니다.
사용 예시
다음은 사용 방법의 몇 가지 예시입니다:
- AI를 사용하여 새 게시글의 대표 이미지 생성
- 게시글이 공개될 때 필수 블록 추가
- 게시글이 업데이트될 때 모든 이미지 소스와 링크의
http를https로 교체 - 새 게시글이 있을 때 관리자에게 이메일 전송
- 댓글에 새 답글이 달린 사용자에게 이메일 전송
- [멀티사이트] 새 게시글을 다양한 언어로 번역하고 번역된 게시글을 각 사이트에 추가
- 외부 서비스에서 액션 실행 (예: 새 게시글을 Facebook에 자동 공유)
예를 들어, draft 상태로 새 게시글을 생성할 때 미리 정의된 자동화 규칙 **「새 게시글에 댓글 블록 추가」**는 core/comments 블록이 있는지 확인하고, 없으면 게시글 하단에 추가합니다:
