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

WooCommerce商品列表页品牌名称显示问题求助

WooCommerce商品列表页品牌名称显示问题求助

嘿,我来帮你排查这个问题~你遇到的商品标题失去跳转链接的情况,大概率是代码的优先级设置或者DOM结构被意外破坏导致的,咱们一步步来解决:

首先看你贴的代码片段,明显没写完(get_the_terms后面的分类slug缺失了),先补全并调整代码逻辑,确保不影响原有标题的链接结构:

情况1:品牌是自定义商品分类(slug为product_brand)

add_action('woocommerce_before_shop_loop_item_title', 'show_brand_before_title', 9); // 把优先级设为9,确保在商品图片之后、标题之前输出
function show_brand_before_title() {         
    global $product;         
    // 替换成你实际的品牌分类slug,比如product_brand
    $terms = get_the_terms($product->get_id(), 'product_brand');         
    if ($terms && !is_wp_error($terms)) {             
        foreach ($terms as $term) {                 
            echo '<div class="product-brand">' . esc_html($term->name) . '</div>';                 
            break; // 只显示第一个关联的品牌         
        }     
    } 
}

情况2:品牌是WooCommerce产品属性(比如属性slug为brand)

如果你的品牌是通过产品属性创建的,用下面的代码更合适:

add_action('woocommerce_before_shop_loop_item_title', 'show_brand_before_title', 9);
function show_brand_before_title() {
    global $product;
    // 替换成你实际的产品属性slug,比如brand或者pa_brand
    $brand_name = $product->get_attribute('brand'); 
    if (!empty($brand_name)) {
        echo '<div class="product-brand">' . esc_html($brand_name) . '</div>';
    }
}

为什么之前标题会失去链接?

  1. 优先级问题:原来的woocommerce_before_shop_loop_item_title钩子默认优先级是10,如果你的代码优先级和其他元素冲突,可能会打乱DOM结构;把优先级设为9,能确保品牌在图片之后、标题之前稳定输出。
  2. 代码不完整:你之前的代码没写完品牌分类的slug,可能导致输出了错误内容,破坏了页面的HTML结构,进而让标题的<a>链接失效。
  3. 主题模板影响:如果你的主题重写了WooCommerce的content-product.php模板,建议检查这个文件里的标题链接标签是否完整,有没有被自定义代码干扰。

要是调整后还是有问题,可以去检查页面的HTML源码,看看品牌输出的位置是不是在商品的<a>包裹标签内部——正常情况下,商品图片和标题都是被<a href="商品链接">包裹的,只要品牌也在这个标签里,就不会影响标题的跳转功能。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.08 12:58:05