Tự động hóa
Tự động hóaTrình Cấu Hình Tự Động Hóa

Trình Cấu Hình Tự Động Hóa

Tự động thực thi một GraphQL Persisted Query khi có sự kiện xảy ra trên trang web.

Mô-đun Trình Cấu Hình Tự Động Hóa cung cấp giao diện người dùng "automator" để tạo các quy tắc tự động hóa thông qua trình soạn thảo WordPress.

Trình kích hoạt tự động hóa là bất kỳ action hook nào của WordPress, và hành động là việc thực thi một GraphQL persisted query.

Một Custom Post Type "Automation Rules" được cung cấp để tạo các quy tắc tự động hóa. Khi tạo một mục mới, chúng ta phải cung cấp cấu hình cho:

  • Trình kích hoạt tự động hóa
  • Hành động tự động hóa
Trình soạn thảo Quy tắc Tự động hóa
Trình soạn thảo Quy tắc Tự động hóa

Hành động tự động hóa

Hành động tự động hóa cho biết GraphQL persisted query nào sẽ được thực thi.

Cấu hình mục này với các trường sau:

Persisted Query: Chọn GraphQL persisted query nào sẽ thực thi (trong số tất cả những query có trạng thái publish hoặc private)

Biến GraphQL tĩnh: Cung cấp một chuỗi JSON với các giá trị cho các biến GraphQL trong persisted query. Đây là các giá trị tĩnh.

Ví dụ:

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

Các giá trị này sẽ bị ghi đè bởi các biến GraphQL "động" (xem Trình kích hoạt tự động hóa bên dưới).

Tên operation (tùy chọn): Nếu persisted query chứa nhiều hơn một operation, bạn có thể chỉ định operation nào sẽ thực thi (theo mặc định, đó là operation cuối cùng).

Thực thi với tư cách người dùng (tùy chọn): Thực thi GraphQL persisted query khi đăng nhập với tư cách một người dùng cụ thể, bằng cách cung cấp slug của người dùng đó.

Quy tắc Tự động hóa - Thực thi Persisted Query
Quy tắc Tự động hóa - Thực thi Persisted Query

Trình kích hoạt tự động hóa

Một trình kích hoạt tự động hóa cho biết action hook nào của WordPress sẽ kích hoạt việc thực thi Persisted Query. Chúng ta có thể cung cấp nhiều hơn một (ví dụ: để phản ứng chỉ khi chỉnh sửa một bài viết hoặc trang, chúng ta có thể cung cấp các hook edit_post_postedit_post_page).

Cấu hình mục này với các trường sau:

Tên hook: Tên action hook của WordPress.

Biến GraphQL động: Cung cấp một chuỗi JSON ánh xạ các biến GraphQL tới các đối số được truyền vào hàm hook. Các giá trị động này sau đó sẽ được cung cấp cho query trong thời gian chạy.

Từ điển JSON phải chứa tên biến GraphQL là khóa, và vị trí của đối số trong action hook là giá trị.

Ví dụ, hook draft_post (từ chuyển đổi trạng thái bài viết) cung cấp $post_id là đối số đầu tiên. Khi đó, JSON sau đây cho biết rằng biến GraphQL $postID sẽ nhận giá trị của $post_id được truyền vào hook:

{
  "postID": 1
}

(Trong ví dụ này, 1 có nghĩa là "giá trị của đối số thứ 1 của draft_post".)

Nếu cùng một khóa được sử dụng cho cả biến GraphQL "động" và "tĩnh" (xem Hành động tự động hóa ở trên), thì các giá trị động sẽ được ưu tiên.

Quy tắc Tự động hóa - Action hook
Quy tắc Tự động hóa - Action hook

Ánh xạ hook WordPress

Có những hook WordPress không thể được sử dụng trực tiếp trong Trình Cấu Hình Tự Động Hóa, vì chúng cung cấp một đối tượng PHP thông qua hook, và đối tượng này không thể được nhập làm biến GraphQL.

Một số hook trong số này đã được Gato GraphQL ánh xạ, bằng cách kích hoạt một hook mới có tiền tố gatographql: và cùng tên hook, đồng thời truyền ID đối tượng tương ứng dưới dạng biến, có thể được nhập làm biến GraphQL.

Ví dụ, hook WordPress draft_to_publish truyền $post dưới dạng biến (kiểu WP_Post). Gato GraphQL ánh xạ hook này thành gatographql:draft_to_publish, và truyền $postId (kiểu int) dưới dạng biến.

Bảng sau liệt kê các hook WordPress đã được ánh xạ:

Hook WordPressHook được ánh xạ bởi Gato GraphQL
{$old_status}_to_{$new_status} (truyền WP_Post $post)gatographql:{$old_status}_to_{$new_status} (truyền int $postId, string $postType)

Ngoài ra, Gato GraphQL kích hoạt lại một số hook WordPress với thêm thông tin trong tên hook, giúp dễ dàng hơn trong việc bắt và tự động hóa các sự kiện cụ thể.

Ví dụ, các hook tạo, cập nhật và xóa giá trị meta được kích hoạt có chứa meta key như một phần của tên hook. Khi đó, một quy tắc tự động hóa có thể được kích hoạt khi ảnh đại diện được gán cho một bài viết, tại hook gatographql:added_post_meta:_thumbnail_id.

Đây là các hook Gato GraphQL bổ sung:

Hook WordPress nguồnHook Gato GraphQL được kích hoạt
{$old_status}_to_{$new_status}
(Truyền 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}
(Tất cả đều truyền int $postId, string $postType)
created_termgatographql:created_term:{$taxonomy}
set_object_termsgatographql:set_object_terms:{$taxonomy}
gatographql:updated_object_terms:{$taxonomy} (Khi có sự khác biệt giữa các term cũ và mới)
added_post_metagatographql:added_post_meta:{$meta_key}
gatographql:added_post_meta:{$post_type}:{$meta_key} (Cũng truyền string $post_type là tham số thứ 5)
updated_post_metagatographql:updated_post_meta:{$meta_key}
gatographql:updated_post_meta:{$post_type}:{$meta_key} (Cũng truyền string $post_type là tham số thứ 5)
deleted_post_metagatographql:deleted_post_meta:{$meta_key}
gatographql:deleted_post_meta:{$post_type}:{$meta_key} (Cũng truyền string $post_type là tham số thứ 5)
added_term_metagatographql:added_term_meta:{$meta_key}
gatographql:added_term_meta:{$taxonomy}:{$meta_key} (Cũng truyền string $taxonomy là tham số thứ 5)
updated_term_metagatographql:updated_term_meta:{$meta_key}
gatographql:updated_term_meta:{$taxonomy}:{$meta_key} (Cũng truyền string $taxonomy là tham số thứ 5)
deleted_term_metagatographql:deleted_term_meta:{$meta_key}
gatographql:deleted_term_meta:{$taxonomy}:{$meta_key} (Cũng truyền string $taxonomy là tham số thứ 5)

Gỡ lỗi sự cố

Nếu quy tắc tự động hóa chưa được thực thi, có thể có lỗi trong cấu hình tự động hóa hoặc trong quá trình thực thi persisted query.

Nhật ký thực thi

Xem Khắc phục sự cố để biết thêm chi tiết.

Nhật ký lỗi

Tất cả các vấn đề cấu hình (chẳng hạn như chuỗi JSON không hợp lệ cho các biến GraphQL, hoặc trỏ đến một persisted query đã bị xóa) và các lỗi thực thi (chẳng hạn như các ngoại lệ được ném ra, hoặc các mục errors trong GraphQL query) đều được gửi đến hàm PHP error_log, vì vậy chúng được in ra trong nhật ký lỗi WordPress.

Các nhật ký lỗi này có tiền tố là chuỗi [Gato GraphQL].

Ví dụ

Dưới đây là một số ví dụ về cách sử dụng:

  • Tạo ảnh đại diện cho bài viết mới bằng AI
  • Thêm một block bắt buộc vào bài viết khi được xuất bản
  • Thay thế http bằng https trong tất cả các nguồn ảnh và liên kết khi bài viết được cập nhật
  • Gửi email cho quản trị viên khi có bài viết mới
  • Gửi email cho người dùng có bình luận nhận được phản hồi mới
  • [Multisite] Dịch bài viết mới sang nhiều ngôn ngữ khác nhau, và thêm các bài viết đã dịch vào mỗi site
  • Thực thi một hành động trên dịch vụ bên ngoài (ví dụ: tự động chia sẻ bài viết mới lên Facebook)

Ví dụ, khi tạo một bài viết mới với trạng thái draft, quy tắc tự động hóa được xác định sẵn Add comments block to new post sẽ kiểm tra xem block core/comments có hiện diện hay không và, nếu không, sẽ thêm nó vào cuối bài viết:

Tự động chèn block bình luận vào bài viết 'draft' mới
Tự động chèn block bình luận vào bài viết 'draft' mới