自定义分类法无法通过ACF获取的技术求助
解决方案:自定义分类法无法通过ACF获取的问题
问题分析
你的代码存在几个关键问题导致ACF无法获取到分类术语:
- 分类法注册函数不完整,缺少函数定义的开头部分,导致分类法未成功注册;
get_terms调用后未处理返回WP_Error的情况,当分类法不存在时直接返回空数组;- 未添加
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
相关产品推荐
相关产品推荐

