WP REST API v2自定义分类法返回数据错乱问题排查
WordPress REST接口自定义分类法关联数据错乱问题
问题表现
通过主题内置配套插件注册的自定义文章类型、自定义分类法,注册阶段已配置show_in_rest => true参数正常暴露至WordPress REST接口,前期功能运行正常,后续无业务代码改动的前提下,接口返回的自定义分类法关联数据出现错乱。经全量排查业务源码,所有实现均符合WordPress官方REST API开发手册规范,无自定义接口逻辑改写。
复现示例
- 测试用自定义文章类型:
pokemon - 测试用关联自定义分类法:
pokemon_category - 请求接口路径:
/wp-json/wp/v2/pokemon
接口实际返回异常结果:
[ { "id": 1, "slug": "ditto", "pokemon_category": [] }, { "id": 2, "slug": "snorlax", "pokemon_category": [ 1, 1 ] } ]
预期正确返回结果:
[ { "id": 1, "slug": "ditto", "pokemon_category": [1] }, { "id": 2, "slug": "snorlax", "pokemon_category": [1] } ]
问题根因
该异常由WPML多语言插件的翻译模式兼容问题触发,复现规律验证如下:
- 当对应自定义文章类型的翻译设置为*Translatable: only show translated items(可翻译:仅显示已翻译项目)*时,分类关联数据错乱问题稳定复现
- 将翻译设置切换为*Translatable: use translation if available or fallback to default language(可翻译:优先使用可用翻译版本,缺失时回退至默认语言)*后,接口返回数据完全恢复正常。
内容的提问来源于stack exchange,提问作者Ivokun
相关产品推荐
相关产品推荐

