【问题标题】:Conditionally adding a cart fee if no coupons are applied to cart如果没有优惠券应用于购物车,则有条件地添加购物车费用
【发布时间】:2017-07-14 10:29:24
【问题描述】:

在 WooCommerce 中,我试图弄清楚如何在没有优惠券或促销代码应用于购物车时为每个订单添加“手续费”。

这是我的“费用”或“手续费”代码:

    add_action( 'woocommerce_cart_calculate_fees','endo_handling_fee' );

function endo_handling_fee() {

global $woocommerce;

     if ( is_admin() && ! defined( 'DOING_AJAX' ) )
          return;

     $fee = 2.00;
     $woocommerce->cart->add_fee( 'Handling', $fee, true, 'standard' );
}

有什么想法吗?

谢谢

【问题讨论】:

    标签: php wordpress woocommerce cart coupon


    【解决方案1】:

    在这里我得到了购物车应用的优惠券数组,如果没有优惠券应用到购物车,则向购物车收取费用。

    代码如下:

    add_action( 'woocommerce_cart_calculate_fees','conditional_handling_fee' );
    function conditional_handling_fee() {
    
        if ( is_admin() && ! defined( 'DOING_AJAX' ) )
            return;
    
        // Get the applied coupons + the count (in cart)
        $applied_coupons_arr = WC()->cart->get_applied_coupons();
        $applied_coupons_count = count($applied_coupons_arr);
    
        $fee = 2.00;
    
        if( 0 == $applied_coupons_count )
            WC()->cart->add_fee( 'Handling - '.$applied_coupons_count, $fee, true, 'standard' );
    
    }
    

    代码进入您的活动子主题(或主题)的 function.php 文件或任何插件文件中。

    此代码已经过测试并且可以工作。


    参考:WC_Cart class - get_applied_coupons() method

    【讨论】:

    • 感谢@LoicTheAztec 的建议,但这对我不起作用,在我的子主题的functions.php 中,替换我上面的代码 - 费用根本不显示。
    • 感谢更新!但是,我想我并不清楚。我需要做的是每个订单将收取 2.00 美元的费用,我需要让任何 $ 优惠券能够应用于整个订单,包括在结帐时应用此“费用”。所以基本上一张优惠券会取消费用而不是添加它。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2021-03-18
    • 2017-06-10
    • 1970-01-01
    • 1970-01-01
    • 2011-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多