如何在ACF中添加选择分类法(而非分类术语)的字段?
使用ACF实现选择分类法本身的字段需求
ACF默认的「Taxonomy」字段确实只能选择分类术语,但完全可以实现让用户选择分类法本身的需求,推荐用「Select」或「Radio Button」字段配合自定义代码动态生成选项,以下是具体实现步骤:
方法:动态生成分类法选项
在ACF字段组里新建一个「Select」(或单选按钮)类型的字段,在「选项」设置中选择「动态选项」→「自定义函数」,然后填写函数名(比如
acf_get_all_taxonomies)。把下面的代码添加到你的WordPress主题
functions.php文件中(或者自定义插件里):
function acf_get_all_taxonomies() { // 获取所有公开的分类法,可根据需求调整参数 $all_taxonomies = get_taxonomies( array( 'public' => true, // 仅获取公开可见的分类法 ), 'objects' ); $taxonomy_options = array(); // 添加默认提示选项 $taxonomy_options[''] = '请选择分类法'; foreach ( $all_taxonomies as $taxonomy ) { // 可在这里排除不需要的分类法,比如内置的标签(post_tag) // if ( $taxonomy->name === 'post_tag' ) continue; // 用分类法的别名(slug)作为值,显示名称用分类法的友好名称 $taxonomy_options[ $taxonomy->name ] = $taxonomy->labels->name; } return $taxonomy_options; }
- 保存字段组后,在编辑页面就能看到所有公开分类法的下拉选项了。
调用字段值
在前端或模板中,用get_field('你的字段键')就能获取选中的分类法slug,后续如果需要获取该分类法的详细信息,可以用get_taxonomy()函数:
$selected_taxonomy_slug = get_field('your_taxonomy_select_field'); if ( $selected_taxonomy_slug ) { $taxonomy_obj = get_taxonomy( $selected_taxonomy_slug ); // 输出分类法名称 echo $taxonomy_obj->labels->name; }
如果需要更灵活的控制(比如只显示自定义分类法),可以修改get_taxonomies的参数,比如添加'_builtin' => false来排除WordPress内置的分类法(如category、post_tag)。
内容的提问来源于stack exchange,提问作者Chester Black
相关产品推荐
相关产品推荐

