You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Polylang实现多语言时,Gatsby从WordPress GraphQL按语言筛选查询返回Null问题

解决Gatsby + Headless WordPress + Polylang查询返回Null的问题

嘿,我之前也碰到过几乎一模一样的问题,这确实需要在Gatsby仓库里做一些额外配置,才能让Polylang的多语言数据正常被拉取和查询。下面是几个你需要逐一检查和调整的关键点:

1. 配置gatsby-source-wordpress启用Polylang支持

这是最核心的一步——你得在gatsby-config.js的WordPress源插件配置里,明确开启Polylang的支持,否则Gatsby不会识别多语言相关的字段。修改你的配置如下:

module.exports = {
  plugins: [
    {
      resolve: `gatsby-source-wordpress`,
      options: {
        // 替换成你的WordPress GraphQL地址
        url: `https://your-wp-site.com/graphql`,
        // 启用Polylang多语言支持
        polylang: {
          enabled: true,
          // 可选:指定默认语言,比如'en'
          // defaultLanguage: 'en'
        },
        // 保留你已有的其他配置(比如useGatsbyImage、schema相关设置)
      },
    },
    // 其他Gatsby插件...
  ],
};

2. 调整查询中的语言代码格式

注意你查询里用了大写的EN,但Polylang在GraphQL中返回的语言代码通常是小写字符串(比如en、fr),Gatsby的Schema会严格匹配这个格式。把查询改成这样试试:

query MyQuery {
  allWpPage(filter: {language: {code: {eq: "en"}}}) {
    nodes {
      slug
    }
  }
}

3. 清理Gatsby缓存并重启开发服务

有时候Gatsby会缓存旧的Schema数据,导致新添加的Polylang字段没有被加载。运行以下命令重置缓存:

gatsby clean

然后重新启动开发服务器:

gatsby develop

4. 确认WordPress端的插件设置

最后再检查一下WordPress后台的WP GraphQL Polylang插件设置,确保已经勾选了暴露多语言字段到GraphQL的相关选项(比如“Expose language fields for content types”),这样语言相关的字段才能被Gatsby正确抓取到。

按照这几步操作后,你应该就能在Gatsby的GraphQL Playground里正常查询到对应语言的页面数据了。

内容的提问来源于stack exchange,提问作者jakmas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 19:23:12