如何在WordPress JSON API中获取ACF关联字段的自定义字段?
解决WordPress REST API无法获取关联自定义文章类型ACF字段的思路
检查ACF字段的REST暴露设置:
确认关联staff的ACF字段在编辑界面中,是否开启了「在REST API中显示」选项,部分字段默认是关闭状态,需要手动开启。强制开启关联CPT的REST支持:
如果staff自定义文章类型是通过CPT UI创建的,先确认它的「启用REST API」选项已勾选,且设置了「REST API基址」。如果未生效,可通过代码强制注册:add_action('init', function() { $args = get_post_type_args('staff'); $args['show_in_rest'] = true; register_post_type('staff', $args); });自定义REST字段手动嵌入关联数据:
通过钩子直接把关联staff的ACF字段加到plays的API响应里,示例代码:add_filter('rest_prepare_play', function($response, $post, $request) { // 替换成你的关联字段名 $staff_ids = get_field('staff_association_field', $post->ID); if ($staff_ids) { $staff_data = []; foreach ($staff_ids as $staff_id) { $staff_acf = get_fields($staff_id); $staff_post = get_post($staff_id); $staff_data[] = array_merge( ['id' => $staff_id, 'title' => $staff_post->post_title], $staff_acf ); } $response->data['related_staff'] = $staff_data; } return $response; }, 10, 3);排查ACF递归插件配置:
确认插件已正确启用,并且在关联字段的设置中,开启了「递归加载ACF字段」的专属选项——部分递归插件需要针对单个字段单独配置,并非全局生效。插件冲突排查:
暂时禁用除CPT UI、ACF、ACF to REST API、ACF递归插件外的所有插件,测试API是否正常返回数据。若恢复正常,再逐个启用插件定位冲突源。主题兼容性测试:
暂时切换到WordPress默认主题(如Twenty Twenty-Four),排查是否是主题的自定义REST过滤代码移除了关联字段数据。
内容的提问来源于stack exchange,提问作者Rémy Le Dernier Bop
相关产品推荐
相关产品推荐

