You need to enable JavaScript to run this app. 如何将WooCommerce订单详情Discount字段移至Shipping下方并同步至邮件
优惠活动
大模型
产品
解决方案
定价
更多

如何将WooCommerce订单详情Discount字段移至Shipping下方并同步至邮件

子主题实现WooCommerce折扣字段移至运费下方(同步适配邮件通知)

实现思路

完全不需要逐行检索WooCommerce插件目录下的折扣相关文件做硬改。WooCommerce 3.0版本之后,所有订单详情、邮件通知内的总计区块,都是通过统一的woocommerce_order_totals_rows钩子逐行输出内容,只需要调整原生字段的钩子挂载顺序,就能同时让所有调用该渲染逻辑的前台页面、后台页面、通知邮件同步生效,不需要单独复制、修改各场景的模板文件。
默认状态下该钩子上的字段挂载优先级为:

  • 折扣行(Discount):优先级10
  • 运费行(Shipping):优先级20
  • 税费行(Tax):优先级30
  • 订单总计行(Total):优先级40
    要实现折扣行移动到运费行下方,只需要把原优先级10的折扣行从钩子上移除,重新挂载到优先级21的位置,即可刚好排在优先级20的运费行后面。

代码操作

将以下代码完整写入子主题根目录的functions.php文件末尾即可:

// 调整订单总计行显示顺序:将折扣行移至运费行下方
add_action( 'init', function() {
    // 移除默认位置的折扣行(适配WooCommerce 7.0及以上版本)
    remove_action( 'woocommerce_order_totals_rows', array( 'WC\Order\Orders\OrderTotals', 'display_discount_row' ), 10 );
    // 重新挂载折扣行到运费行的下一渲染位置
    add_action( 'woocommerce_order_totals_rows', array( 'WC\Order\Orders\OrderTotals', 'display_discount_row' ), 21 );
} );

版本兼容说明:如果使用WooCommerce 7.0以下的旧版本,将上述代码中的类方法array( 'WC\Order\Orders\OrderTotals', 'display_discount_row' )替换为全局函数'wc_display_discount_row'即可,优先级参数保持不变。

生效覆盖范围

代码写入后无需额外修改其他文件,以下场景会自动同步为调整后的顺序:

  • 前台用户端「我的账户」板块的订单详情区块
  • WooCommerce后台的订单编辑页面总计区块
  • 所有WooCommerce默认触发的通知邮件(新订单通知、订单处理完成通知、客户收货通知等)内的订单详情区块

异常排查

如果代码写入后字段顺序没有变化,无需返回插件目录搜索对应文件,只需检查当前网站的主题、第三方结算插件是否自定义过订单总计的钩子逻辑,通过调试工具查看woocommerce_order_totals_rows钩子上的实际回调和优先级,对应调整折扣行重新挂载的优先级数值即可。该操作只调整输出节点的顺序,不会改动原有金额计算、字段样式的逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.26 07:57:02