求助:将WooCommerce产品子分类标题从H2改为段落的代码问题
WooCommerce子分类标题标签修改问题排查及修复
原代码存在的问题
- remove_action目标函数名错误:你写的
woocommerce-loop-category__title是标题的CSS类名,而非WooCommerce默认的回调函数名,正确的默认函数是woocommerce_template_loop_category_title。 - 未接收钩子传递的分类参数:
woocommerce_shop_loop_category_title钩子会传递当前分类对象作为参数,直接用get_the_title()无法正确获取分类名称(该函数针对文章/post类型)。 - HTML转义字符冗余:代码里的
<和"没必要保留,直接写原生HTML标签更易读。
修复后的代码
// 移除默认的分类标题钩子 remove_action( 'woocommerce_shop_loop_category_title', 'woocommerce_template_loop_category_title', 10 ); // 添加自定义钩子回调 add_action( 'woocommerce_shop_loop_category_title', 'ChangeCategoryTitle', 10 ); function ChangeCategoryTitle( $category ) { // 输出p标签包裹的分类名称,保留原类名保证样式兼容 echo '<p class="woocommerce-loop-category__title">' . esc_html( $category->name ) . '</p>'; }
额外说明
- 使用
esc_html()对分类名称进行转义,避免XSS安全风险。 - 保留原CSS类名
woocommerce-loop-category__title,确保原有样式不会失效。 - 代码需添加到主题的
functions.php文件或自定义插件中,不要直接修改WooCommerce核心文件。
内容的提问来源于stack exchange,提问作者Ihtisham Ali
相关产品推荐
相关产品推荐

