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

自定义分类法无法通过ACF获取的技术求助

解决方案:自定义分类法无法通过ACF获取的问题

问题分析

你的代码存在几个关键问题导致ACF无法获取到分类术语:

  1. 分类法注册函数不完整,缺少函数定义的开头部分,导致分类法未成功注册;
  2. get_terms调用后未处理返回WP_Error的情况,当分类法不存在时直接返回空数组;
  3. 未添加show_in_rest参数,可能导致ACF在后台上下文无法识别该分类法。

修复后的代码

1. 正确注册自定义分类法

确保分类法注册函数完整,并添加必要参数:

function wpdocs_create_book_tax() {
    register_taxonomy( 'genre', 'books', array(
        'label'        => __( 'Genre', 'textdomain' ),
        'rewrite'      => array( 'slug' => 'genre' ),
        'hierarchical' => true,
        'show_in_rest' => true, // 确保后台及ACF能访问该分类法
        'public'       => true, // 显式设置为公开,确保分类法可见
    ) );
}
add_action( 'init', 'wpdocs_create_book_tax', 0 );

2. 优化ACF选项获取函数

添加分类法存在性检查和错误处理,同时简化代码:

function get_terms_for_acf_select() {
    // 先验证分类法是否存在
    if ( ! taxonomy_exists( 'genre' ) ) {
        return array();
    }

    $terms = get_terms( array(
        'taxonomy'   => 'genre',
        'hide_empty' => false,
        'fields'     => 'id=>name', // 直接获取ID为键、名称为值的数组,无需手动循环
    ) );

    // 处理可能的错误
    if ( is_wp_error( $terms ) ) {
        return array();
    }

    return $terms;
}

额外检查

确认你的自定义文章类型books已经正确注册,因为分类法genre关联到该文章类型,若文章类型未注册,分类法也无法正常工作。

内容的提问来源于stack exchange,提问作者jimi-del

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 13:10:14