Blog

🚀 Automatyzuj swoje zadania WordPress z nowym Gato GraphQL v2.1

Leonardo Losoviz
Autor: Leonardo Losoviz ·

Z radością ogłaszamy, że Gato GraphQL v2.1 zostało wydane!

Dzięki tej nowej wersji i rozszerzeniom PRO możesz używać GraphQL jako Automatyzatora, wykorzystując utrwalone queries GraphQL do automatyzacji zadań związanych z danymi w swojej witrynie WordPress.

Poniżej znajdują się wszystkie zmiany wprowadzone w v2.1 (skrócona wersja jest dostępna w notach wydania na GitHubie).

Obsługa podawania konfiguracji schematu podczas wywoływania wewnętrznego serwera GraphQL

Teraz możemy określić, którą konfigurację schematu zastosować podczas wykonywania query przez wewnętrzny serwer GraphQL (tj. bezpośrednio w aplikacji PHP, bez użycia endpointu).

Ta nowa funkcja ulepsza rozszerzenie Internal GraphQL Server: akceptuje teraz parametr $schemaConfigurationIDOrSlug w metodach executeQuery i executeQueryInFile klasy GraphQLServer, a w executePersistedQuery wyodrębnia konfigurację schematu używaną przez utrwalone query:

class GraphQLServer {
  
  public static function executeQuery(
    string $query,
    array $variables = [],
    ?string $operationName = null,
+   // Accept parameter 
+   int|string|null $schemaConfigurationIDOrSlug = null,
  ): Response {
    // ...
  }
 
  public static function executeQueryInFile(
    string $file,
    array $variables = [],
    ?string $operationName = null,
+   // Accept parameter 
+   int|string|null $schemaConfigurationIDOrSlug = null,
  ): Response {
    // ...
  }
 
  public static function executePersistedQuery(
    WP_Post|string|int $persistedQuery,
    array $variables = [],
    ?string $operationName = null,
+   // Schema Configuration is taken directly from the Persisted Query
  ): Response {
    // ...
  }

GraphQL jako Automatyzator [PRO]

Powyższa funkcja stanowi również podstawę do ulepszenia rozszerzenia Automation.

Rozszerzenie Automation oferuje teraz interfejs użytkownika typu "automatyzator" (bezpośrednio przez edytor WordPress) o nazwie Automation Configurator. Wyzwalaczem automatyzacji jest dowolny action hook WordPressa, a akcją jest wykonanie utrwalonej query GraphQL.

Edytor reguł automatyzacji
Edytor reguł automatyzacji

Na przykład podczas tworzenia nowego wpisu reguła automatyzacji Add comments block to new post (wykonująca utrwalone query o tej samej nazwie) sprawdza, czy blok core/comments jest obecny i jeśli nie, dodaje go na końcu wpisu:

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

Oto kilka sposobów, w jakie możesz używać automatyzatora:

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

Ponieważ możesz komponować utrwalone queries GraphQL i reguły automatyzacji bezpośrednio w wp-admin, stworzenie w pełni spersonalizowanego potoku automatyzacji, dostosowanego do Twoich potrzeb, nie zajmuje wcale dużo czasu.

A ponieważ nie ma żadnych ograniczeń w danych wejściowych (query GraphQL może wchodzić w interakcję ze wszystkimi danymi w WordPressie i łączyć się z dowolną usługą zewnętrzną za pośrednictwem klienta HTTP), powinieneś być w stanie spełnić 100% swoich wymagań.

(Wtyczki do automatyzacji zazwyczaj zaspokajają 95% naszych potrzeb, gdyż często okazuje się, że pewne wymagane dane wejściowe nie zostały uwzględnione.)

Wiele reguł automatyzacji jest już tworzonych przez wtyczkę (ze statusem draft, więc należy je zaktualizować do publish, aby weszły w życie). Możesz już z nich korzystać, a także sprawdzić je jako przykłady do tworzenia własnych automatyzacji (ta lista będzie rozszerzana w kolejnych wydaniach):

  • Add comments block to new post
  • Insert block in new post
  • Send notification email to admin when there is a new post
  • Generate a post's featured image using AI (and optimize it) if a new post has none
Reguły automatyzacji
Reguły automatyzacji

Predefiniowana utrwalona query "Insert block in post"

Nowo dodana utrwalona query GraphQL "Insert block in post" umożliwia wstrzyknięcie bloku do wpisu. Identyfikuje ona n-ty blok danego typu (wp:paragraph domyślnie) we wpisie i umieszcza treść HTML dostarczonego niestandardowego bloku bezpośrednio po nim.

Używana z rozszerzeniem Automation, ta utrwalona query może służyć do automatycznego wstrzykiwania obowiązkowych bloków do nowo opublikowanego wpisu (np. bloku CTA promującego trwającą kampanię).

Ulepszenia

  • Jeśli inicjalizacja kontenera usług z pamięci podręcznej nie powiedzie się, powrót do inicjalizacji obiektu PHP z pamięci (#2638)
  • Nadawanie unikalnej nazwy operacji wszystkim predefiniowanym utrwalonym queries (#2644)
  • Ulepszone komunikaty błędów podczas pobierania bloków z wpisu zawierającego błędy w treści
  • Uzupełniona dokumentacja rozszerzenia Automation (#2651)
  • W predefiniowanej utrwalonej query "Generate a post's featured image using AI and optimize it", wykonywanie logiki tylko wtedy, gdy tytuł wpisu nie jest pusty (#ec931dd)

Poprawki

  • Błąd w wieloformantowym komponencie JS używanym przez rozszerzenia (Access Control, Cache Control i Field Deprecation), który wyświetlał "undefined" w bloku w konfiguracji schematu (#2639)
  • Błąd w zastąpieniach za pomocą wyrażeń regularnych w predefiniowanych utrwalonych queries (#2649)
  • Zapobieganie ponownemu instalowaniu danych konfiguracyjnych wtyczki podczas dezaktywacji/reaktywacji wtyczki (#2641)
  • Obsługa błędu podczas przekazywania WP_Post jako zmiennej GraphQL do wewnętrznego serwera GraphQL (#2652)

Zapisz się do naszego newslettera

Bądź na bieżąco ze wszystkimi aktualizacjami Gato GraphQL.