Automatyzacja
AutomatyzacjaKonfigurator Automatyzacji

Konfigurator Automatyzacji

Automatycznie wykonuje Persisted Query GraphQL, gdy na stronie wystąpi określone zdarzenie.

Moduł Konfigurator Automatyzacji udostępnia interfejs użytkownika "automatyzatora" do tworzenia automatyzacji za pomocą edytora WordPress.

Wyzwalaczem automatyzacji jest dowolny action hook WordPressa, a akcją jest wykonanie persisted query GraphQL.

Udostępniony jest Custom Post Type "Reguły Automatyzacji" do tworzenia automatyzacji. Podczas tworzenia nowego wpisu należy podać konfigurację dla:

  • Wyzwalacza(y) automatyzacji
  • Akcji automatyzacji
Edytor Reguły Automatyzacji
Edytor Reguły Automatyzacji

Akcja automatyzacji

Akcja automatyzacji wskazuje, która persisted query GraphQL zostanie wykonana.

Skonfiguruj ten element za pomocą następujących elementów:

Persisted Query: Wybierz, którą persisted query GraphQL wykonać (spośród wszystkich ze statusem publish lub private).

Statyczne zmienne GraphQL: Podaj ciąg JSON z wartościami zmiennych GraphQL w persisted query. Są to wartości statyczne.

Na przykład:

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

Wartości te są zastępowane przez "dynamiczne" zmienne GraphQL (patrz Wyzwalacz(e) automatyzacji poniżej).

Nazwa operacji (opcjonalnie): Jeśli persisted query zawiera więcej niż jedną operację, możesz wskazać, którą wykonać (domyślnie jest to ostatnia).

Wykonaj jako użytkownik (opcjonalnie): Wykonuje persisted query GraphQL będąc zalogowanym jako określony użytkownik — podaj slug użytkownika.

Reguła Automatyzacji - Wykonanie Persisted Query
Reguła Automatyzacji - Wykonanie Persisted Query

Wyzwalacz(e) automatyzacji

Wyzwalacz automatyzacji wskazuje, który action hook WordPressa uruchomi wykonanie Persisted Query. Można podać więcej niż jeden (np. aby reagować tylko na edycję posta lub strony, można podać hooki edit_post_post i edit_post_page).

Skonfiguruj ten element za pomocą następujących elementów:

Nazwa hooka: Nazwa action hooka WordPressa.

Dynamiczne zmienne GraphQL: Podaj ciąg JSON mapujący zmienne GraphQL na argumenty przekazane do funkcji hooka. Te dynamiczne wartości będą następnie przekazane do query w czasie wykonania.

Słownik JSON musi zawierać nazwę zmiennej GraphQL jako klucz oraz pozycję argumentu w action hooku jako wartość.

Na przykład hook draft_post (z przejść statusów postów) przekazuje $post_id jako pierwszy argument. Poniższy JSON wskazuje, że zmienna GraphQL $postID otrzyma wartość $post_id przekazaną do hooka:

{
  "postID": 1
}

(W tym przykładzie 1 oznacza "wartość 1. argumentu draft_post".)

Jeśli ten sam klucz jest używany dla "dynamicznych" i "statycznych" zmiennych GraphQL (patrz Akcja automatyzacji powyżej), wartości dynamiczne mają pierwszeństwo.

Reguła Automatyzacji - Action hook
Reguła Automatyzacji - Action hook

Mapowanie hooków WordPressa

Istnieją hooki WordPressa, których nie można bezpośrednio używać w Konfiguratorze Automatyzacji, ponieważ przekazują obiekt PHP przez hook, który nie może być użyty jako zmienna GraphQL.

Kilka z tych hooków zostało zmapowanych przez Gato GraphQL poprzez wywołanie nowego hooka z prefiksem gatographql: i tą samą nazwą hooka, oraz przekazanie odpowiedniego ID obiektu jako zmiennej, która może być użyta jako zmienna GraphQL.

Na przykład hook WordPressa draft_to_publish przekazuje $post jako zmienną (typu WP_Post). Gato GraphQL mapuje ten hook jako gatographql:draft_to_publish i przekazuje $postId (typu int) jako zmienną.

Poniższa tabela zawiera listę zmapowanych hooków WordPressa:

Hook WordPressaHook zmapowany przez Gato GraphQL
{$old_status}_to_{$new_status} (przekazując WP_Post $post)gatographql:{$old_status}_to_{$new_status} (przekazując int $postId, string $postType)

Ponadto Gato GraphQL ponownie wywołuje kilka hooków WordPressa z dodatkowymi informacjami w nazwie hooka, aby ułatwić przechwytywanie i automatyzację konkretnych zdarzeń.

Na przykład hooki tworzące, aktualizujące i usuwające wartości meta są wywoływane z meta key jako częścią nazwy hooka. Dzięki temu automatyzacja może być uruchomiona, gdy do posta jest przypisany wyróżniony obrazek, na hooku gatographql:added_post_meta:_thumbnail_id.

Oto dodatkowe hooki Gato GraphQL:

Źródłowy hook WordPressaWywołany hook Gato GraphQL
{$old_status}_to_{$new_status}
(Przekazując 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}
(Wszystkie przekazując int $postId, string $postType)
created_termgatographql:created_term:{$taxonomy}
set_object_termsgatographql:set_object_terms:{$taxonomy}
gatographql:updated_object_terms:{$taxonomy} (Gdy istnieje różnica między starymi a nowymi termami)
added_post_metagatographql:added_post_meta:{$meta_key}
gatographql:added_post_meta:{$post_type}:{$meta_key} (Również przekazując string $post_type jako 5. parametr)
updated_post_metagatographql:updated_post_meta:{$meta_key}
gatographql:updated_post_meta:{$post_type}:{$meta_key} (Również przekazując string $post_type jako 5. parametr)
deleted_post_metagatographql:deleted_post_meta:{$meta_key}
gatographql:deleted_post_meta:{$post_type}:{$meta_key} (Również przekazując string $post_type jako 5. parametr)
added_term_metagatographql:added_term_meta:{$meta_key}
gatographql:added_term_meta:{$taxonomy}:{$meta_key} (Również przekazując string $taxonomy jako 5. parametr)
updated_term_metagatographql:updated_term_meta:{$meta_key}
gatographql:updated_term_meta:{$taxonomy}:{$meta_key} (Również przekazując string $taxonomy jako 5. parametr)
deleted_term_metagatographql:deleted_term_meta:{$meta_key}
gatographql:deleted_term_meta:{$taxonomy}:{$meta_key} (Również przekazując string $taxonomy jako 5. parametr)

Debugowanie problemów

Jeśli automatyzacja nie została wykonana, może wystąpić błąd w konfiguracji automatyzacji lub podczas wykonywania persisted query.

Logi wykonania

Sprawdź Rozwiązywanie problemów, aby uzyskać więcej szczegółów.

Logi błędów

Wszystkie problemy z konfiguracją (takie jak nieprawidłowo sformatowany ciąg JSON dla zmiennych GraphQL lub wskazanie na persisted query, która została usunięta) i błędy wykonania (takie jak rzucone wyjątki lub wpisy errors w query GraphQL) są wysyłane do funkcji PHP error_log, a więc są zapisywane w logu błędów WordPressa.

Te logi błędów są poprzedzone ciągiem [Gato GraphQL].

Przykłady

Oto kilka przykładów użycia:

  • Tworzenie wyróżnionego obrazka dla nowych postów przy użyciu AI
  • Dodawanie obowiązkowego bloku do posta podczas publikacji
  • Zastępowanie http przez https we wszystkich źródłach obrazków i linkach podczas aktualizacji posta
  • Wysyłanie e-maila do administratora, gdy pojawi się nowy post
  • Wysyłanie e-maila do użytkownika, którego komentarz otrzymał nową odpowiedź
  • [Multisite] Tłumaczenie nowego posta na różne języki i dodawanie przetłumaczonych postów do każdej witryny
  • Wykonywanie akcji w zewnętrznej usłudze (np. automatyczne udostępnianie nowych postów na Facebooku)

Na przykład podczas tworzenia nowego posta ze statusem draft predefiniowana reguła automatyzacji Dodaj blok komentarzy do nowego posta sprawdza, czy blok core/comments jest obecny i jeśli nie — dodaje go na końcu posta:

Automatyczne wstawianie bloku komentarzy do nowych postów ze statusem 'draft'
Automatyczne wstawianie bloku komentarzy do nowych postów ze statusem 'draft'