使用WPGraphQL获取WordPress文章时modified字段返回创建日期问题
解决WPGraphQL中modified字段与date字段值相同的问题
问题场景
在Vue.js项目中使用Apollo通过WPGraphQL v1.26.0获取WordPress文章时,modified字段始终返回与date(创建日期)相同的值,尝试通过lastEditedBy查询也得到了不匹配的日期结果。
可能原因及解决办法
1. WordPress修订机制未正确触发
WordPress的post_modified字段(对应WPGraphQL的modified)仅在文章生成修订版本时才会更新。如果出现字段值相同的情况,先排查:
- 检查文章后台是否存在修订记录:进入文章编辑页,查看右侧「修订」面板,确认有修改历史。
- 确认
wp-config.php中的修订设置:确保WP_POST_REVISIONS未被设为false,建议设置为true或具体数字(如define('WP_POST_REVISIONS', 3);),开启修订功能。 - 注意:快速编辑部分内容可能不会生成修订版本,需进入完整编辑页修改并更新文章,触发修订记录。
2. WPGraphQL字段异常或缓存问题
- 检查是否有自定义代码修改了
modified字段的返回逻辑:比如主题或插件中使用graphql_post_fields等钩子篡改了字段值。 - 清除WPGraphQL缓存:在WordPress后台进入「GraphQL」->「设置」,点击「清除缓存」按钮,重新查询。
- 尝试更新WPGraphQL到最新版本:旧版本可能存在字段映射的bug,升级后大概率能解决问题。
3. lastEditedBy查询逻辑错误
你之前的lastEditedBy查询路径完全错误:lastEditedBy关联的是最后编辑文章的用户,而用户的posts字段返回的是该用户发布的所有文章的创建日期,和当前文章的修改日期无关。
正确的查询方式
如果modified字段依然异常,可以直接查询文章的修订版本,取最新修订的日期作为最后修改时间:
query FetchPostByUri($uri: String!) { postBy(uri: $uri) { date modified # 查询文章的最新修订版本 revisions(first: 1, where: {orderby: DATE, order: DESC}) { nodes { date # 修订版本的创建日期即为修改时间 author { node { name } } } } } }
这个查询会返回最新的1条修订记录,其date字段就是文章最后一次修改的时间。
额外排查步骤
- 禁用其他第三方插件,测试是否是插件冲突导致WPGraphQL字段异常。
- 在WPGraphQL的GraphiQL编辑器中直接执行查询,排除前端Apollo缓存的影响。
内容的提问来源于stack exchange,提问作者GiovanniManetti11
相关产品推荐
相关产品推荐

