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

如何在WooCommerce所有邮件通知中隐藏订单详情表指定自定义费用行

解决方案

你之前用CSS隐藏的方案失效是因为绝大多数邮件客户端对CSS选择器支持度极低,且不同邮件模板的行结构、序号不固定,无法通用。推荐直接用WooCommerce原生钩子在数据层面过滤要隐藏的费用行,兼容性100%,适用于所有邮件通知模板:

操作步骤

将以下代码添加到你的WordPress主题functions.php文件,或者自定义代码片段插件中即可:

add_filter( 'woocommerce_get_order_item_totals', 'hide_customfee2_in_all_emails', 10, 3 );
function hide_customfee2_in_all_emails( $total_rows, $order, $tax_display ) {
    // 仅在邮件通知场景下过滤,不影响后台、前端订单详情页显示
    if ( did_action( 'woocommerce_email_header' ) ) {
        foreach ( $total_rows as $key => $row ) {
            // 匹配你要隐藏的customfee2对应的费用名称
            if ( isset( $row['label'] ) && trim( $row['label'] ) === 'A retirer' ) {
                unset( $total_rows[$key] );
                break;
            }
        }
    }
    return $total_rows;
}

补充说明

  • 如果需要同时在后台订单编辑页、前端用户订单详情页也隐藏该费用行,删掉代码中的if ( did_action( 'woocommerce_email_header' ) )判断条件即可
  • 若后续修改了customfee2的费用名称,同步修改代码中判断的名称字符串即可;也可增加金额匹配规则,避免误删其他同名称费用:
    // 替换原有if判断条件即可,用金额+名称双重校验更精准
    $target_amount = ( $order->get_cart_contents_total() + $order->get_shipping_total() ) * -1;
    if ( isset( $row['label'] ) && trim( $row['label'] ) === 'A retirer' && $row['value'] === wc_price( $target_amount ) )
    
  • 之前添加的CSS隐藏代码可以直接删除,避免产生多余的样式冗余

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 05:54:04