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

如何在WooCommerce 8及Martfury主题中修改循环产品标题HTML标签

解决Martfury主题修改产品循环标题标签的问题

核心原因

你之前的方法无效,是因为Martfury主题没有使用WooCommerce默认的woocommerce_template_loop_product_title函数输出标题,而是自己实现了一套自定义的标题渲染逻辑,所以移除默认钩子不会起作用。

具体解决步骤

  1. 确认主题的自定义标题钩子
    打开Martfury主题的woocommerce/content-product.php文件(通常在主题根目录的woocommerce子文件夹里),找到产品标题对应的代码块,会看到类似这样的结构:

    do_action( 'woocommerce_shop_loop_item_title' );
    

    接着去主题的functions.php文件里搜索这个钩子对应的回调函数,大概率是martfury_template_loop_product_title(主题自定义的函数名)。

  2. 添加自定义代码到子主题functions.php
    不要直接修改父主题文件(避免主题更新后代码丢失),一定要用子主题。添加以下代码:

    // 移除Martfury主题默认的产品标题钩子
    remove_action( 'woocommerce_shop_loop_item_title', 'martfury_template_loop_product_title', 10 );
    
    // 自定义产品标题输出逻辑
    function custom_martfury_loop_product_title() {
        // 判断当前页面:首页/前端首页用H3,产品分类页用P
        $title_tag = ( is_front_page() || is_home() ) ? 'h3' : 'p';
        // 输出带对应标签的标题,保留原类名
        printf( '<%1$s class="woocommerce-loop-product__title">%2$s</%1$s>', esc_attr( $title_tag ), get_the_title() );
    }
    // 添加自定义钩子到原位置
    add_action( 'woocommerce_shop_loop_item_title', 'custom_martfury_loop_product_title', 10 );
    
  3. 如果不确定主题的回调函数名
    可以临时添加调试代码,查看当前钩子绑定的所有回调:

    add_action( 'wp_footer', function() {
        global $wp_filter;
        if ( isset( $wp_filter['woocommerce_shop_loop_item_title'] ) ) {
            var_dump( $wp_filter['woocommerce_shop_loop_item_title'] );
        }
    } );
    

    访问产品页面后,查看页面底部的输出,找到Martfury主题对应的回调函数名,替换到上面代码的remove_action里即可。

验证效果

保存子主题functions.php后,刷新首页和产品分类页,检查标题标签是否分别变为H3和P,且原样式类名woocommerce-loop-product__title保留,不会影响原有样式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 07:35:08