如何在ACF的Select Field中正确解析并显示短代码内容?
解决ACF选择字段中短代码不解析的问题
方法一:直接生成分类/标签作为ACF选项(推荐)
ACF的Select字段默认不会自动解析短代码,与其放短代码,不如直接把分类、标签作为选项动态生成,选完就能拿到真实名称:
- 在主题的
functions.php中添加以下代码,用来拉取分类和标签作为选项:
// 生成ACF分类选择字段的选项 function acf_get_category_options() { $categories = get_categories(['hide_empty' => false]); $options = []; foreach ($categories as $cat) { $options[$cat->term_id] = $cat->name; } return $options; } // 生成ACF标签选择字段的选项 function acf_get_tag_options() { $tags = get_tags(['hide_empty' => false]); $options = []; foreach ($tags as $tag) { $options[$tag->term_id] = $tag->name; } return $options; }
- 回到ACF的字段编辑页面:
- 针对分类选择字段,将「选项」设置为「动态选项」,选择「函数」后输入
acf_get_category_options - 针对标签选择字段,同理选择
acf_get_tag_options - 可在「返回格式」里选「标签」(直接返回名称),或「值」(返回分类/标签ID,前端需用
get_term($field_value)->name获取名称)
- 针对分类选择字段,将「选项」设置为「动态选项」,选择「函数」后输入
方法二:手动解析短代码(适合已有字段不想修改的情况)
如果已经把短代码放进了Select选项里,只需在前端调用ACF字段时,用do_shortcode()包裹字段值,强制解析短代码:
// 替换成你的ACF字段名 echo do_shortcode(get_field('your_select_field_key'));
这样原本显示[post_category]或[post_tag]的地方,就会被解析成对应的分类/标签名称了。
内容的提问来源于stack exchange,提问作者Sekiroweb
相关产品推荐
相关产品推荐

