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

如何在购物车总额为0时移除WooCommerce手续费?

解决方案:购物车总额为0时移除实体商品手续费

直接修改你的代码,在添加手续费的判断条件中,新增购物车最终需支付总额大于0的检查即可:

/* Add handling to cart at checkout */
add_action( 'woocommerce_cart_calculate_fees','handling_fee' );
function handling_fee() {
    global $woocommerce; 
 
    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;
 
    // 检查是否所有商品都是虚拟商品
    $allproductsvirtual = true; 
    $fee = 0;
    foreach ( $woocommerce->cart->get_cart() as $cart_item_key => $values) {
        $product = $values['data'];
        if( !$product->is_virtual() ){
            $allproductsvirtual = false;
        }
    }
    // 仅当存在实体商品,且购物车最终需支付金额大于0时,添加手续费
    if ( !$allproductsvirtual && $woocommerce->cart->total > 0 ) {
        $fee = 3.00;
    }
    $woocommerce->cart->add_fee( 'Handling', $fee, false, 'standard' );
}

关键修改说明

  • 新增$woocommerce->cart->total > 0判断:$woocommerce->cart->total是购物车经过优惠券抵扣、运费计算后的最终需支付金额,当该金额为0时(比如员工优惠券全免商品及运费),即使有实体商品也不会添加手续费。
  • 这个判断逻辑准确可靠,因为woocommerce_cart_calculate_fees钩子触发时,系统已经完成了优惠券、运费等费用的计算,还未添加当前手续费,不会出现逻辑循环问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 07:16:12