⭐️ Application Passwordsサポート、WordPress Multisite対応、ページのmutationsを搭載したv2.4をリリース
Gato GraphQL v2.4がいくつかの改善とバグ修正とともにリリースされました。
Application Passwordsサポート
WordPressのApplication Passwordsを使用して、GraphQLエンドポイントへ認証済みリクエストを送信できるようになりました。
たとえば、USERNAMEとPASSWORDの値を置き換えて、GraphQLサーバーに対してcurlコマンドを実行する際にapplication passwordを渡すことができます。
curl -i \
--user "USERNAME:PASSWORD" \
-X POST \
-H "Content-Type: application/json" \
-d '{"query": "{ me { name } }"}' \
https://mysite.com/graphqlGato 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.createPageRoot.updatePagePage.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.page、Root.pages、Root.pageCountはすべてのユーザーのページを取得しますが、公開ページ(つまり、ステータスが"publish"のもの)のみが対象です。
このバージョンから、以下の新しいフィールドを使用して、ログイン中ユーザーの公開・非公開ページ(ステータスが"publish"、"pending"、"draft"、または"trash"のもの)を取得できるようになります。
Root.myPageRoot.myPagesRoot.myPageCount
query {
myPages(filter: { status: [draft, pending] }) {
id
title
status
}
}サイトのロケールと言語を取得するフィールドを追加
以下のフィールドがGraphQLスキーマに追加されました。
Root.siteLocaleRoot.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を追加:
- 拡張機能をハイライト表示し、Webサイトで訪問するリンクを有効化 (#2674)
- GraphiQLクライアント(LocalWP用)がサイトURLをエンドポイントとして使用するようになりました (#2686)
- intが期待される場面でstringを渡した際の内部サーバーエラー (v2.4.1)