WPML GraphQL – 适用于无头 WordPress 的多语言 WPGraphQL
构建多语言无头 WordPress 网站。WPML GraphQL 为 WPGraphQL 架构添加了语言感知功能。每个查询都可以按语言进行筛选。每个查询都可以返回节点的翻译。多语言菜单可通过该架构获取。已翻译的 URI 也能正确解析。WPML GraphQL 由 WPML 团队开发,旨在与 WPGraphQL 配合使用,后者是 Next.js、Nuxt、Astro、Gatsby 及其他前端框架用于读取 WordPress 内容的开源插件。包含在 Multilingual CMS 和 Agency 帐户中。
从前端按语言查询内容
每个 WPGraphQL 查询都会获得一个 language 参数。在单个字段中按语言筛选文章、自定义文章类型、分类法项、菜单、菜单项和评论——无需在前端进行查询后筛选,无需增加一倍的请求量,也无需猜测语言。
query PostsES {
posts(where: { language: "es" }) {
nodes { slug uri title }
}
}
当您按语言筛选顶级节点时,关联的项目(类别、标签、自定义分类法)会自动遵循相同的语言。结果保持一致,无需为每个嵌套字段添加额外的参数。
想要获取所有内容(无论语言如何)以用于 XML 站点地图或汇总统计?请传递 language: "all"。
在一次查询中获取节点的所有翻译
文章和分类法项上的 translations 字段会返回节点的每种其他语言版本:别名、URI、语言代码以及您请求的任何嵌套字段。一次查询,一次往返,即可获取页面的所有语言版本。
这正是您在页面内容旁渲染语言切换器所需的数据,而无需让前端执行一连串的相关查询。
多语言菜单、分类法、评论和语言数据
除了文章之外,WPML GraphQL 还将相同的 language 参数和翻译处理扩展到:
- 菜单和菜单项。
menu(language: "fr")用于按语言导航。在 WPML GraphQL 1.1.0 中添加。 - 分类法项。类别、标签和自定义分类法默认遵循其文章的语言,并且可以直接按语言进行查询。
- 评论。返回与特定语言的文章关联的评论。
languages和defaultLanguage查询。列出网站上安装的每种语言,包括代码、区域设置、本族语名称、国旗 URL 和主页 URL。为自定义语言切换器提供正确的数据结构。
按 ID 或别名查询任何语言的特定文章
有两种查询形式可以通过特定语言的标识符获取单篇已翻译的文章:
query PostBySlug {
post(id: "hola-mundo", idType: SLUG) {
title slug uri
}
}
query PostById {
post(id: "2", idType: DATABASE_ID) {
title slug uri
}
}
任何一种形式都会返回已翻译的文章及其翻译后的标题、别名和 URI——前端无需单独编写“这是翻译吗?”的逻辑。
针对当前 WPGraphQL 版本进行维护
WPML GraphQL 1.1.3 已在 WPGraphQL 2.0.0(WPGraphQL 项目当前的主要发布版本)上进行了测试。维护 WPGraphQL 的团队与我们密切合作,因此多语言层能始终与架构保持同步。当 WPGraphQL 发布新版本时,WPML GraphQL 也会紧随其后进行更新。
添加 ACFML 和 WPGraphQL for ACF 后即可与 ACF 配合使用
对于在 Advanced Custom Fields 中构建内容模型并通过 WPGraphQL 公开这些字段的网站,WPML GraphQL 可与 ACFML 和 WPGraphQL for ACF 结合使用,从而为 ACF 选项页面查询添加 language 参数:
query Settings {
myOptionPage(language: "de") {
addressFieldGroup {
addressTitle
repeaterAddressDetails { addressDetails }
}
}
}
文章和自定义文章类型上的 ACF 字段会自动遵循所属文章的语言。
WPML GraphQL 包含在 WPML 中
WPML GraphQL 随 Multilingual CMS 和 WPML Agency 一起提供。无需单独购买,也没有按站点收取的费用。只需购买 WPML 一次,您的无头多语言技术栈即可拥有语言层。如果您已经拥有 WPML,请从您的 WPML 下载页面激活 WPML GraphQL。