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>'; } }
为什么之前标题会失去链接?
- 优先级问题:原来的
woocommerce_before_shop_loop_item_title钩子默认优先级是10,如果你的代码优先级和其他元素冲突,可能会打乱DOM结构;把优先级设为9,能确保品牌在图片之后、标题之前稳定输出。 - 代码不完整:你之前的代码没写完品牌分类的slug,可能导致输出了错误内容,破坏了页面的HTML结构,进而让标题的
<a>链接失效。 - 主题模板影响:如果你的主题重写了WooCommerce的
content-product.php模板,建议检查这个文件里的标题链接标签是否完整,有没有被自定义代码干扰。
要是调整后还是有问题,可以去检查页面的HTML源码,看看品牌输出的位置是不是在商品的<a>包裹标签内部——正常情况下,商品图片和标题都是被<a href="商品链接">包裹的,只要品牌也在这个标签里,就不会影响标题的跳转功能。
内容来源于stack exchange
相关产品推荐
相关产品推荐

