You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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集成,步骤如下:

  1. 进入WordPress后台的「自定义字段」→「设置」
  2. 找到「REST API」选项,勾选「启用ACF字段在REST API中显示」
  3. 打开你给分类创建的字段组,在「设置」标签页里,找到「显示在REST API」并勾选
  4. 保存后,分类的REST响应里就会自动包含你设置的ACF字段了

注意事项

  • 确保你的ACF字段组确实绑定到「分类」这个分类法上(字段组的位置规则要选「分类」)
  • 如果你用的是ACF 5.x以下的旧版本,可能没有自带的REST支持,建议升级到最新版

内容的提问来源于stack exchange,提问作者Gustavo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 07:59:06