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
相关产品推荐
相关产品推荐

