如何在WooCommerce商店页将分类名称显示于分组商品上方
WooCommerce 商店页面分类标题分组显示解决方案
要实现按分类分组、分类标题显示在对应商品组上方的效果,你需要跟踪当前商品所属分类,仅在每个分类的第一个商品前输出分类标题,替代你之前的代码:
// 全局变量记录上一个商品的分类ID $previous_cat_id = 0; function wc_display_category_title_before_product_group() { global $previous_cat_id; // 获取当前商品的分类 $product_cats = wp_get_post_terms( get_the_ID(), 'product_cat' ); if ( $product_cats && !is_wp_error( $product_cats ) ) { // 取第一个分类(如果商品属于多个分类,可根据需求调整) $current_cat = array_shift( $product_cats ); // 仅当前分类和上一个分类不同时,输出分类标题 if ( $current_cat->term_id !== $previous_cat_id ) { ?> <h2 class="product_category_title" itemprop="name"> <span><?php echo esc_html( $current_cat->name ); ?></span> </h2> <?php // 更新上一个分类ID为当前分类ID $previous_cat_id = $current_cat->term_id; } } } // 使用woocommerce_before_shop_loop_item钩子,确保标题显示在商品上方 add_action( 'woocommerce_before_shop_loop_item', 'wc_display_category_title_before_product_group', 5 );
代码说明:
- 改用
woocommerce_before_shop_loop_item钩子,让分类标题显示在商品卡片上方 - 通过全局变量
$previous_cat_id记录上一个商品的分类ID,避免重复输出同一分类标题 - 用
esc_html()转义分类名称,提升站点安全性 - 若商品属于多个分类,代码默认取第一个分类,你可根据需求调整逻辑(比如指定取主分类)
额外提示:
- 确保商店页面按分类排序,否则分类标题会混乱(可在WooCommerce设置或页面查询中设置排序规则为“分类”)
- 可通过自定义CSS调整
.product_category_title的样式,匹配你的主题风格
内容的提问来源于stack exchange,提问作者Korac Yigitbasi
相关产品推荐
相关产品推荐

