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

WooCommerce:子分类列表描述限80字符,分类页面完整显示需求

嘿,这就给你调整代码,完美实现你要的效果!核心思路就是通过判断当前页面类型,来决定是输出截断后的描述还是完整描述:

/* Enter your custom functions here */

// 移除默认的分类描述输出
remove_action('woocommerce_after_subcategory_title', 'woocommerce_subcategory_description', 10);

// 添加自定义的分类描述输出函数
add_action('woocommerce_after_subcategory_title', 'custom_truncated_category_description', 10);

function custom_truncated_category_description() {
    global $category;
    
    // 获取当前分类的描述内容
    $cat_description = $category->description;
    
    // 判断当前是否是「展示下属产品的分类页面」(即分类产品归档页)
    if (is_product_category($category->slug)) {
        // 显示完整描述,保留段落格式
        echo wpautop($cat_description);
    } else {
        // 首页/子分类列表页:截断到约80字符,支持多字节语言(如中文)
        $max_length = 80;
        if (mb_strlen($cat_description) > $max_length) {
            // 截断并添加省略号,同时保留段落格式
            echo wpautop(mb_substr($cat_description, 0, $max_length) . '...');
        } else {
            // 描述本身不长,直接输出
            echo wpautop($cat_description);
        }
    }
}

代码说明:

  • 首先移除了WooCommerce默认的分类描述输出钩子,替换成我们自定义的函数,完全掌控输出逻辑。
  • 用is_product_category($category->slug)精准判断当前页面是否是该分类的产品归档页(也就是你说的「展示下属产品的分类页面」),是的话直接输出完整描述。
  • 其他场景(首页的分类卡片、子分类列表页)则用mb_substr截断到80字符,避免卡片布局混乱,同时支持中文等多字节字符不会出现截断乱码的问题。
  • wpautop函数用来保持描述原有的段落格式,让输出内容更美观,不会丢失原有的排版。

如果你的子分类列表页是父分类下专门展示子分类的页面,这个判断逻辑也完全适用——此时当前页面是父分类的归档页,而子分类卡片的$category->slug是子分类的slug,is_product_category($category->slug)会返回false,自动触发截断逻辑。

内容的提问来源于stack exchange,提问作者Jamyy10

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:39:29