ブログ

⭐️ Application Passwordsサポート、WordPress Multisite対応、ページのmutationsを搭載したv2.4をリリース

Leonardo Losoviz
著者: Leonardo Losoviz ·

Gato GraphQL v2.4がいくつかの改善とバグ修正とともにリリースされました。

Application Passwordsサポート

WordPressのApplication Passwordsを使用して、GraphQLエンドポイントへ認証済みリクエストを送信できるようになりました。

たとえば、USERNAMEPASSWORDの値を置き換えて、GraphQLサーバーに対してcurlコマンドを実行する際にapplication passwordを渡すことができます。

curl -i \
  --user "USERNAME:PASSWORD" \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{"query": "{ me { name } }"}' \
  https://mysite.com/graphql

Gato GraphQL PROを使用する場合、新たに追加された_strBase64Encodeフィールドにより、GraphQLを使って別のWordPressサイトへの認証済みHTTPリクエストを実行できます。

以下のクエリは、ユーザー名とapplication password(および接続先エンドポイント)を受け取り、必要な認証ヘッダー(「Basic base64encoded(username:password)」形式)を生成し、実行するGraphQLクエリを渡してGraphQLサーバーへHTTPリクエストを送信します。

query GetDataFromExternalWPSite(
  $username: String!
  $appPassword: String!
  $endpoint: URL!
) {
  loginCredentials: _sprintf(
    string: "%s:%s",
    values: [$username, $appPassword]
  )
    @remove
 
  base64EncodedLoginCredentials: _strBase64Encode(
    string: $__loginCredentials
  )
    @remove
 
  loginCredentialsHeaderValue: _sprintf(
    string: "Basic %s",
    values: [$__base64EncodedLoginCredentials]
  )
    @remove
 
  externalHTTPRequestWithUserPassword: _sendGraphQLHTTPRequest(input:{
    endpoint: $endpoint,
    query: """
  
{
  me {
    name
  }
}
 
    """,
    options: {
      headers: [
        {
          name: "Authorization",
          value: $__loginCredentialsHeaderValue
        }
      ]
    }
  })
}

WordPress Multisiteとの互換性

Gato GraphQLをWordPress Multisiteネットワークと互換性のある状態にするため、いくつかの問題が修正されました。

Gato GraphQL PROの単一ライセンスを有効化して、Multisite全体を運用することが可能になりました。

デモ動画「WordPress MultisiteベースのMultilingual SiteでのページのTra翻訳」をご覧ください。このデモでは、Gato GraphQLがWordPress Multisiteネットワークに基づいたMultilingual Siteのすべてのページを翻訳する様子をご確認いただけます。

GraphQLスキーマにページのmutationsを追加

以下のmutationsがGraphQLスキーマに追加されました。

  • Root.createPage
  • Root.updatePage
  • Page.update

たとえば、次のGraphQLクエリを実行してページを変更できます。

mutation UpdatePage {
  updatePage(input: {
    id: 2
    title: "Updated title"
    contentAs: { html: "Updated content" },
    status: pending
  }) {
    status
    errors {
      __typename
      ...on ErrorPayload {
        message
      }
    }
    page {
      id
      rawTitle
      rawContent
      status
    }
  }
}

ログイン中ユーザーのページを取得するフィールドを追加

v2.4では、ログイン中ユーザーのページを取得するフィールドも追加されました。

既存のフィールドRoot.pageRoot.pagesRoot.pageCountはすべてのユーザーのページを取得しますが、公開ページ(つまり、ステータスが"publish"のもの)のみが対象です。

このバージョンから、以下の新しいフィールドを使用して、ログイン中ユーザーの公開・非公開ページ(ステータスが"publish""pending""draft"、または"trash"のもの)を取得できるようになります。

  • Root.myPage
  • Root.myPages
  • Root.myPageCount
query {
  myPages(filter: { status: [draft, pending] }) {
    id
    title
    status
  }
}

サイトのロケールと言語を取得するフィールドを追加

以下のフィールドがGraphQLスキーマに追加されました。

  • Root.siteLocale
  • Root.siteLanguage

たとえば、次のクエリを実行すると:

{
  siteLocale
  siteLanguage
}

...次のような結果が返される場合があります。

{
  "data": {
    "siteLocale": "en_US",
    "siteLanguage": "en"
  }
}

これらのフィールドは、新しい「Site」モジュール経由で提供されます。このモジュールを無効にすると、GraphQLスキーマからフィールドが削除されます。

改善とバグ修正

  • 「internal」プライベートカスタムエンドポイントのインストール (#2684)
  • 新しいPROフィールド_strBase64Encodeのドキュメントを追加 (#2673)
  • gatographql.comのExtensions Referenceへの拡張機能リンクを追加 (#2675)
  • AboutページにYouTubeチャンネルリンクを追加 (#2676)
  • 事前定義されたpersisted queriesを追加:
    • [PRO] Multilingual Siteのすべてのページを翻訳して作成する (Multisite / Gutenberg) (#2688)
    • [PRO] Multilingual Siteのすべてのページを翻訳して作成する (Multisite / クラシックエディター) (#2688)
  • 拡張機能をハイライト表示し、Webサイトで訪問するリンクを有効化 (#2674)
  • GraphiQLクライアント(LocalWP用)がサイトURLをエンドポイントとして使用するようになりました (#2686)
  • intが期待される場面でstringを渡した際の内部サーバーエラー (v2.4.1)

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

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