ブログ

🚀 新しいGato GraphQL v2.1でWordPressのタスクを自動化しよう

Leonardo Losoviz
著者: Leonardo Losoviz ·

Gato GraphQL v2.1 がリリースされましたことをお知らせいたします!

この新バージョンとPRO拡張機能を組み合わせることで、GraphQL as Automator(オートメーターとしてのGraphQL)が実現できます。GraphQL永続クエリを活用して、WordPressサイトのデータ関連タスクを自動化することが可能になります。

以下に v2.1 で追加されたすべての変更点を記載します(短縮版はGitHubのリリースノートでご確認いただけます)。

内部GraphQLサーバー呼び出し時に適用するスキーマ設定の指定をサポート

内部GraphQLサーバー(つまり、エンドポイント経由ではなくPHPアプリケーション内で直接実行する場合)を介してクエリを実行する際に、適用するスキーマ設定を指定できるようになりました。

この新機能はInternal GraphQL Server拡張機能を強化するものです。GraphQLServerクラスのexecuteQueryおよびexecuteQueryInFileメソッドに$schemaConfigurationIDOrSlugパラメーターが追加され、executePersistedQueryでは永続クエリで使用されているスキーマ設定をすでに抽出しています。

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 as Automator [PRO]

上記の機能は、Automation拡張機能のアップグレードの基盤にもなっています。

Automation拡張機能には、Automation Configuratorと呼ばれる「オートメーター」ユーザーインターフェース(WordPressエディターから直接利用可能)が追加されました。オートメーションのトリガーはWordPressのアクションフックであり、アクションはGraphQL永続クエリの実行です。

オートメーションルールエディター
オートメーションルールエディター

たとえば、新しい投稿を作成したとき、オートメーションルール Add comments block to new post同名の永続クエリを実行)はcore/commentsブロックが存在するかどうかを確認し、存在しない場合は投稿の末尾に追加します。

新しい「下書き」投稿にコメントブロックを自動挿入する様子
新しい「下書き」投稿にコメントブロックを自動挿入する様子

オートメーターの活用例をいくつかご紹介します。

  • AIを使って新しい投稿のアイキャッチ画像を作成(および最適化)する
  • 投稿が公開されたときに必須ブロックを追加する
  • 投稿が更新されたときに、すべての画像ソースとリンクのhttphttpsに置換する
  • 新しい投稿があったときに管理者へメールを送信する
  • コメントに新しい返信があったユーザーへメールを送信する
  • [マルチサイト] 新しい投稿を複数の言語に翻訳し、翻訳した投稿を各サイトに追加する
  • 外部サービスでアクションを実行する(例:新しい投稿をFacebookに自動シェアする)

GraphQL永続クエリとオートメーションルールはwp-admin内で直接作成できるため、ニーズに合わせた高度にカスタマイズされたオートメーションパイプラインをすぐに構築できます。

入力に制約がないため(GraphQLクエリはWordPress内のすべてのデータと連携でき、HTTPクライアントを介して任意の外部サービスに接続できます)、要件の100%を満たすことができるはずです。

(オートメータープラグインは通常、私たちのニーズの95%を満たしますが、必要な入力がマッピングされていないケースに遭遇することがよくあります。)

プラグインにはすでにいくつかのオートメーションルールが作成されています(ステータスはdraftのため、有効にするにはpublishに更新する必要があります)。これらをすぐに利用できるほか、自分のオートメーションを作成する際の参考例としても活用できます(このリストは今後のリリースで拡充される予定です)。

  • 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
オートメーションルール
オートメーションルール

事前定義済み永続クエリ「Insert block in post」

新たに追加された永続GraphQLクエリ「Insert block in post」は、投稿にブロックを挿入することができます。投稿内で指定したタイプのn番目のブロック(デフォルトはwp:paragraph)を識別し、提供されたカスタムブロックのHTMLコンテンツをその直後に配置します。

Automation拡張機能と組み合わせて使用することで、この永続クエリは新規公開された投稿に必須ブロックを自動的に挿入するために活用できます(例:進行中のキャンペーンを宣伝するCTAブロック)。

改善点

  • サービスコンテナのキャッシュからの初期化に失敗した場合、メモリからPHPオブジェクトを初期化するフォールバック処理を追加 (#2638)
  • 事前定義済みのすべての永続クエリに一意のoperationNameを付与 (#2644)
  • 投稿からブロックを取得する際にブロックコンテンツにエラーがある場合のエラーメッセージを改善
  • Automation拡張機能のドキュメントを完成 (#2651)
  • 事前定義済み永続クエリ「Generate a post's featured image using AI and optimize it」において、投稿タイトルが空でない場合にのみロジックを実行するよう修正 (#ec931dd)

修正

  • 拡張機能(Access Control、Cache Control、Field Deprecation)で使用されるマルチコントロールJSコンポーネントがスキーマ設定のブロックに「undefined」と表示されるバグ (#2639)
  • 事前定義済み永続クエリにおける正規表現置換のバグ (#2649)
  • プラグインを無効化・再有効化した際にプラグインのセットアップデータが再インストールされないよう修正 (#2641)
  • 内部GraphQLサーバーへGraphQL変数としてWP_Postを渡した際のエラーを処理 (#2652)

ニュースレターを購読する

Gato GraphQL のすべてのアップデートを把握しましょう。