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

在单品页显示产品分类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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 22:10:11