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

WooCommerce中从订单总额剔除运费:订单确认页不生效如何解决?

WooCommerce订单确认页剔除运费解决方案

原有测试代码存在3个问题:

  1. 钩子注册时声明了接收2个参数,但回调函数只写了1个参数,逻辑运行异常
  2. 计算逻辑写死了减10的固定值,没有替换为实际运费金额
  3. 没有处理运费对应的税费部分,也没有同步修改订单的运费字段,会导致订单明细和总额不匹配

你可以直接用以下代码替换原有订单处理阶段的代码:

add_action( 'woocommerce_checkout_create_order', 'adjust_order_total_remove_shipping', 20, 2 );
function adjust_order_total_remove_shipping( $order, $data ) {
    // 获取运费金额(不含税)
    $shipping_total = $order->get_shipping_total();
    // 获取运费对应的税费总额
    $shipping_tax_total = $order->get_shipping_tax();
    // 获取原订单总额
    $original_total = $order->get_total();

    // 计算新总额 = 原总额 - 运费 - 运费对应的税费
    $new_total = $original_total - $shipping_total - $shipping_tax_total;

    // 可选:将订单运费和运费税设为0,避免后端订单详情显示运费造成混淆
    $order->set_shipping_total(0);
    $order->set_shipping_tax(0);
    // 重置运费税明细
    $order->set_shipping_taxes(array());

    // 设置新的订单总额
    $order->set_total( $new_total );
}

注意事项

  • 之前的购物车、结账页代码可以正常保留使用
  • 如果你的站点没有启用税费计算,可以删掉所有和shipping_tax相关的逻辑,直接用$new_total = $original_total - $shipping_total计算即可
  • 测试前先清空WooCommerce缓存、站点缓存和浏览器缓存,建议用无痕模式测试完整下单流程
  • 如果还是不生效,可以尝试调高代码的优先级(把钩子中的20改为999),排除其他插件/自定义代码的逻辑冲突

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 01:27:00