⭐️ 发布 v2.4,新增 Application Passwords 支持、WordPress Multisite 兼容性以及页面 mutations
Gato GraphQL v2.4 已发布,包含多项改进和错误修复。
Application Passwords 支持
现在可以使用 WordPress Application Passwords 向 GraphQL 端点发送经过身份验证的请求。
例如,在对 GraphQL 服务器执行 curl 命令时,可以传入 application password,替换 USERNAME 和 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 请求。
以下 query 接收用户名和 application password(以及要连接的端点),生成所需的身份验证标头(格式为 "Basic base64encoded(username:password)"),并向 GraphQL 服务器发送 HTTP 请求,同时传入要执行的 GraphQL query:
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 的多语言站点上翻译页面」,其中展示了 Gato GraphQL 如何帮助翻译基于 WordPress Multisite 网络的多语言站点中的所有页面:
向 GraphQL schema 添加页面 mutations
以下 mutations 已添加到 GraphQL schema:
Root.createPageRoot.updatePagePage.update
例如,现在可以执行以下 GraphQL query 来修改页面:
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 schema:
Root.siteLocaleRoot.siteLanguage
例如,执行以下 query:
{
siteLocale
siteLanguage
}……可能会返回:
{
"data": {
"siteLocale": "en_US",
"siteLanguage": "en"
}
}这些字段通过新的「Site」模块提供。禁用该模块将从 GraphQL schema 中移除这些字段。
改进与修复
- 安装「internal」私有自定义端点 (#2684)
- 为新 PRO 字段
_strBase64Encode添加文档 (#2673) - 将扩展功能链接到 gatographql.com 的 Extensions Reference (#2675)
- 在 About 页面添加 YouTube 频道链接 (#2676)
- 添加预定义的 persisted queries:
- 高亮显示扩展功能并启用在网站中访问的链接 (#2674)
- GraphiQL 客户端(适用于 LocalWP)现在使用站点 URL 作为端点 (#2686)
- 修复在期望 int 时传入 string 导致的内部服务器错误 (v2.4.1)