如何在WooCommerce商品分类名称中添加换行(以|为分隔标识)
解决WooCommerce商品分类名称换行显示的问题
嘿,我来帮你搞定这个分类名称换行的需求!你想要把用|分隔的英文和中文分类名分成两行显示,其实用WooCommerce的钩子就能轻松实现,不用手动改每个分类的名称,下面给你两种靠谱的方案:
方案一:自动替换分隔符为换行(推荐)
这个方法会自动检测分类名称里的|分隔符,把它转换成HTML换行标签<br>,不管是产品页面的分类标签,还是分类归档页面的标题都能生效。
把下面的代码添加到你当前主题的functions.php文件里(注意备份主题文件哦):
// 修改产品页面上的分类名称显示 add_filter( 'woocommerce_product_category_list_item_title', 'split_category_title_by_pipe', 10, 2 ); function split_category_title_by_pipe( $title, $category ) { // 检查标题是否包含指定分隔符 if ( strpos( $title, ' | ' ) !== false ) { // 分割成英文和中文两部分 list( $english_part, $chinese_part ) = explode( ' | ', $title, 2 ); // 用<br>实现换行,如果你想要英文和中文之间有空格对齐,也可以换成 组合,但换行更直接 $title = $english_part . '<br>' . $chinese_part; } return $title; } // 修改分类归档页面的标题显示 add_filter( 'get_the_archive_title', 'split_category_archive_title_by_pipe' ); function split_category_archive_title_by_pipe( $title ) { // 只针对产品分类归档页面生效 if ( is_product_category() && strpos( $title, ' | ' ) !== false ) { // 去掉WooCommerce默认的"产品分类: "前缀(如果不需要可以删掉这行) $title = str_replace( '产品分类: ', '', $title ); list( $english_part, $chinese_part ) = explode( ' | ', $title, 2 ); $title = $english_part . '<br>' . $chinese_part; } return $title; }
添加完代码后,你的分类名称比如North American Red Sea Cucumber | 北美红参就会自动变成英文一行,中文一行显示啦。
方案二:直接在分类名称里添加HTML换行
如果你更倾向于手动控制每个分类的换行位置,可以先让WooCommerce允许分类名称里使用<br>标签,再手动编辑分类名称。
添加下面的代码到主题functions.php:
// 允许分类名称里使用<br>标签 add_filter( 'wp_kses_allowed_html', 'allow_br_in_category_titles', 10, 2 ); function allow_br_in_category_titles( $allowed_tags, $context ) { if ( $context === 'term_name' || $context === 'post_title' ) { $allowed_tags['br'] = array(); } return $allowed_tags; }
之后你就可以在编辑分类的时候,直接把名称写成North American Red Sea Cucumber<br>北美红参,保存后就能看到换行效果了。
注意事项
- 如果你用的是自定义主题,更新主题的时候记得把这些代码转移到子主题里,不然更新后代码会丢失哦。
- 有些主题可能会对标题做额外的转义处理,如果发现换行没生效,可以检查主题的模板文件,确保标题输出时用了
echo wp_kses_post( $title )而不是echo esc_html( $title )。
内容的提问来源于stack exchange,提问作者jiankun mao
相关产品推荐
相关产品推荐

