
本文介绍如何精准控制 woocommerce 商品列表页中短描述的显示范围,仅在特定商品分类(如 accessories、bags、clothing)下输出产品短描述,避免全局展示,提升页面定制灵活性与用户体验。
本文介绍如何精准控制 woocommerce 商品列表页中短描述的显示范围,仅在特定商品分类(如 accessories、bags、clothing)下输出产品短描述,避免全局展示,提升页面定制灵活性与用户体验。
在 WooCommerce 默认行为中,woocommerce_after_shop_loop_item_title 钩子会作用于所有商品循环项,因此原始代码会在所有分类归档页和搜索结果页中显示短描述。若需实现“按需启用”,关键在于:动态判断当前商品是否属于预设的指定分类,再决定是否渲染短描述。
以下是优化后的完整解决方案:
add_action('woocommerce_after_shop_loop_item_title', 'webroom_add_short_description_in_product_categories');
function webroom_add_short_description_in_product_categories() {
global $product;
// 确保 $product 对象有效
if ( ! $product || ! is_a($product, 'WC_Product') ) {
return;
}
// 获取当前商品所属的所有 product_cat 分类(注意:返回对象数组或 false)
$product_categories = get_the_terms($product->get_id(), 'product_cat');
// 定义你希望启用短描述的分类名称(支持中文或英文,需与后台分类名完全一致)
$target_categories = [
'Accessories',
'Bags',
'Clothing',
// ✅ 可在此追加更多分类,例如:'Sale', 'New Arrivals'
];
$should_show = false;
// 检查商品是否至少属于一个目标分类
if ( $product_categories && ! is_wp_error($product_categories) ) {
foreach ( $product_categories as $term ) {
if ( in_array($term->name, $target_categories) ) {
$should_show = true;
break;
}
}
}
// 仅当商品有短描述且属于目标分类时才输出
if ( ! $product->get_short_description() || ! $should_show ) {
return;
}
?>
<div class="woocommerce-product-short-description" itemprop="description">
<?php echo apply_filters('woocommerce_short_description', $product->get_short_description()); ?>
</div>
<?php }✅ 使用说明与注意事项:
- 分类名称必须与 WordPress 后台「产品 → 分类目录」中设置的分类名称(Name 字段)完全匹配(区分大小写,不包含 slug 或 ID);
- 若使用中文分类名(如
'手机配件'),请确保$target_categories数组中使用相同编码与空格; - 建议为
<div> 添加 <code>class属性(如示例中的woocommerce-product-short-description),便于后续 CSS 样式控制与主题兼容; -
get_the_terms()可能返回WP_Error对象(如权限异常),已添加is_wp_error()安全检查; - 此逻辑在循环中执行,性能开销极小,适用于中大型站点。
? 进阶建议:
如需更高灵活性(例如通过后台选项动态配置分类),可结合 wp_options 表 + 自定义设置页面,将 $target_categories 替换为 get_option('wc_show_short_desc_in_cats', [])。但对多数场景而言,上述硬编码方式简洁、可靠、易于维护。
通过该方案,你即可实现“所见即所得”的分类级内容控制,让产品展示更专业、更贴合运营需求。










