WordPress ACF字段无法通过POST请求保存及返回问题
WordPress REST API 无法保存ACF字段及返回字段数据问题
问题场景
已创建自定义文章类型mood_tracker,并通过ACF添加了自定义字段,但遇到两个核心问题:
- 通过POST请求提交数据时,ACF字段无法成功存储
- 在WordPress后台手动创建条目后,调用REST API请求该条目ID,响应结果中不包含ACF字段数据
请求信息
请求URL
https://link.com/wp-json/wp/v2/mood_tracker
请求JSON
{ "title": "title 7", "acf": { "feeling": "ok", "feeling_at_the_moment": "relieved", "what_have_you_been_doing": "chores", "cognitive_distortions": "", "challenge": "", "interpretation": "", "feeling_now": "", "email": "gmail.com" } }
响应结果
{ "id": 4392, "date": "2022-12-03T19:49:14", "date_gmt": "2022-12-03T19:49:14", "guid": { "rendered": "/?post_type=mood_tracker&p=4392", "raw": "/?post_type=mood_tracker&p=4392" }, "modified": "2022-12-03T19:49:14", "modified_gmt": "2022-12-03T19:49:14", "password": "", "slug": "", "status": "draft", "type": "mood_tracker", "link": "/?post_type=mood_tracker&p=4392", "title": { "raw": "title 7", "rendered": "title 7" }, "content": { "raw": "", "rendered": "", "protected": false, "block_version": 0 }, "featured_media": 0, "template": "", "meta": { "_mi_skip_tracking": false }, "permalink_template": "/mood_tracker/%pagename%/", "generated_slug": "title-7", "_links": { "self": [ { "href": "/wp-json/wp/v2/mood_tracker/4392" } ], "collection": [ { "href": "/wp-json/wp/v2/mood_tracker" } ], "about": [ { "href": "/wp-json/wp/v2/types/mood_tracker" } ], "wp:attachment": [ { "href": "/wp-json/wp/v2/media?parent=4392" } ], "wp:action-publish": [ { "href": "/wp-json/wp/v2/mood_tracker/4392" } ], "wp:action-unfiltered-html": [ { "href": "/wp-json/wp/v2/mood_tracker/4392" } ], "curies": [ { "name": "wp", "href": "https://api.w.org/{rel}", "templated": true } ] } }
解决方案
1. 启用ACF的REST API支持
ACF默认不会将自定义字段暴露到REST API,需添加代码开启支持。在主题functions.php或自定义插件中加入以下代码:
// 全局启用ACF REST API支持 add_filter('acf/rest_api/settings', function($settings) { $settings['enabled'] = true; return $settings; }); // 确保自定义文章类型开启REST API支持(若创建时未配置) add_action('init', function() { register_post_type('mood_tracker', array( // 保留原有自定义文章类型配置,新增以下参数 'show_in_rest' => true, 'rest_base' => 'mood_tracker', 'rest_controller_class' => 'WP_REST_Posts_Controller', )); });
2. 优化请求方式与权限
- 使用ACF专属端点:若使用ACF Pro,建议调用ACF官方REST端点
/wp-json/acf/v3/mood_tracker,该端点专门处理ACF字段的增删改查,兼容性更强。 - 验证权限:确保请求用户拥有
edit_posts及以上权限,请求头需携带正确的认证信息(如Bearer Token)。 - 匹配字段键名:确认请求中ACF字段的键名与后台创建的字段键完全一致(大小写敏感)。
3. 检查字段配置
进入ACF字段组编辑页面,确认:
- 字段的“可见性”设置对当前请求用户开放
- 字段组的位置规则正确关联到
mood_tracker自定义文章类型
4. 调试排查
- 在WordPress后台查看该条目,确认ACF字段是否真的未被保存
- 开启
WP_DEBUG模式,查看错误日志定位问题 - 使用Postman等工具重新发送请求,检查请求头、参数格式是否正确
内容的提问来源于stack exchange,提问作者ImDarkk
相关产品推荐
相关产品推荐

