博客

⭐️ 发布 v2.4,新增 Application Passwords 支持、WordPress Multisite 兼容性以及页面 mutations

Leonardo Losoviz
作者:Leonardo Losoviz ·

Gato GraphQL v2.4 已发布,包含多项改进和错误修复。

Application Passwords 支持

现在可以使用 WordPress Application Passwords 向 GraphQL 端点发送经过身份验证的请求。

例如,在对 GraphQL 服务器执行 curl 命令时,可以传入 application password,替换 USERNAMEPASSWORD 的值:

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.createPage
  • Root.updatePage
  • Page.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.pageRoot.pagesRoot.pageCount 可获取任意用户的页面,但仅限公开页面(即状态为 "publish" 的页面)。

从此版本起,可以使用以下新字段获取已登录用户的公开或私有页面(状态为 "publish""pending""draft""trash"):

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

添加用于获取站点语言区域和语言的字段

以下字段已添加到 GraphQL schema:

  • Root.siteLocale
  • Root.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:
    • [PRO] 为多语言站点翻译并创建所有页面 (Multisite / Gutenberg) (#2688)
    • [PRO] 为多语言站点翻译并创建所有页面 (Multisite / 经典编辑器) (#2688)
  • 高亮显示扩展功能并启用在网站中访问的链接 (#2674)
  • GraphiQL 客户端(适用于 LocalWP)现在使用站点 URL 作为端点 (#2686)
  • 修复在期望 int 时传入 string 导致的内部服务器错误 (v2.4.1)

订阅我们的新闻通讯

及时了解 Gato GraphQL 的所有更新。