如何在WP REST API中获取分类的ACF字段?
在WP REST API中获取分类的ACF字段的正确方法
嘿,我来帮你搞定这个问题!你现在的代码问题出在针对文章的函数用在了分类上——分类属于WordPress里的「术语(Term)」,和文章(Post)是不同的对象,所以得调整一下实现方式:
一、修正你的自定义代码
你原来用了get_post_meta()和get_the_ID(),这俩都是给文章用的。针对分类,我们需要用适配术语的函数,并且从REST回调的参数里拿到分类ID:
add_action( 'rest_api_init', 'add_category_acf_fields_to_rest' ); function add_category_acf_fields_to_rest() { register_rest_field( 'category', 'avatar', array( // get_callback会自动接收分类对象作为参数 'get_callback' => function( $term ) { // 方法1:用ACF自带的get_field,第二个参数格式是「分类法名_分类ID」 return get_field( 'avatar', 'category_' . $term['id'] ); // 方法2:直接调用term_meta(ACF会把字段存在term_meta表中) // return get_term_meta( $term['id'], 'avatar', true ); }, // 可选:添加字段的Schema描述,让API文档更清晰 'schema' => array( 'description' => '分类的头像ACF字段', 'type' => 'string' ), )); }
代码说明:
$term['id']是从REST传递的分类对象中获取的分类ID,替代了原来不适用的get_the_ID()- 用
get_field()的好处是,ACF会自动处理字段格式(比如图片字段会返回你设置的格式:ID/URL/完整数组),而get_term_meta()只会返回原始存储的值
二、更简单的方法:启用ACF自带的REST支持
如果你不想写自定义代码,ACF本身就提供了开箱即用的REST API集成,步骤如下:
- 进入WordPress后台的「自定义字段」→「设置」
- 找到「REST API」选项,勾选「启用ACF字段在REST API中显示」
- 打开你给分类创建的字段组,在「设置」标签页里,找到「显示在REST API」并勾选
- 保存后,分类的REST响应里就会自动包含你设置的ACF字段了
注意事项
- 确保你的ACF字段组确实绑定到「分类」这个分类法上(字段组的位置规则要选「分类」)
- 如果你用的是ACF 5.x以下的旧版本,可能没有自带的REST支持,建议升级到最新版
内容的提问来源于stack exchange,提问作者Gustavo
相关产品推荐
相关产品推荐

