在单品页显示产品分类ACF字段的短码问题
问题修复:获取产品最深层级分类的ACF字段
原代码的问题在于遍历产品分类时,仅取了第一个分类就终止循环,导致拿到的是层级最浅的分类1,而非你需要的最后一级品牌分类分类2。要解决这个问题,我们需要从产品所属的所有分类中筛选出层级最深的那个分类,再获取它的ACF字段。
修改后的代码如下:
<?php function get_current_product_category1(){ global $post; // 获取产品所属的所有分类 $terms = get_the_terms( $post->ID, 'product_cat' ); // 初始化最深层级分类变量 $deepest_term = null; // 验证分类是否存在且无错误 if ( $terms && !is_wp_error( $terms ) ) { // 遍历所有分类,找出层级最深的那个 foreach ( $terms as $term ) { // 如果当前分类的层级比已记录的更深,或者还没记录过分类 if ( !$deepest_term || $term->depth > $deepest_term->depth ) { $deepest_term = $term; } } } // 如果找到最深层级分类,获取其ACF字段 if ( $deepest_term ) { $acf_field = get_field('merk_header_afbeelding', $deepest_term); // 确保字段存在且有url属性时返回,否则返回空字符串避免报错 return isset( $acf_field['url'] ) ? $acf_field['url'] : ''; } // 没有找到分类时返回空 return ''; } add_shortcode ('categorie_acf2', 'get_current_product_category1'); ?>
关键修改说明:
- 新增了对分类层级(
$term->depth)的判断,确保拿到的是层级最深的分类(也就是路径中最后一级的分类2) - 增加了错误处理和空值判断,避免因分类不存在或ACF字段为空导致的报错
- 移除了无用的
$nterms变量(原代码中未使用到)
内容的提问来源于stack exchange,提问作者Bent
相关产品推荐
相关产品推荐

