【问题标题】:Set minimum order value only if no coupon applied仅在未应用优惠券时设置最低订单价值
【发布时间】:2020-02-07 22:16:59
【问题描述】:

我正在使用 sn-p 设置 WooCommerce 商店的最低订单价值。但是,如果使用优惠券,我会遇到一些问题。

例如,最小订单价值为 500,客户应用价值 500 的优惠券 - 这将给出小计 0,因此系统将不允许客户购买,因为小计小于最小订单价值.

因此,我正在尝试重写最低订单价值 sn-p,以便在应用优惠券时不会设置最小值。

在做了一些研究后,我发现我应该使用!empty($woocommerce->cart->applied_coupons)检查是否应用了优惠券。但是,这似乎不起作用。我错过了什么??

// MINIMUM ORDER AMOUNT

add_action( 'woocommerce_checkout_process', 'wc_minimum_order_amount' );
add_action( 'woocommerce_before_cart' , 'wc_minimum_order_amount' );

function wc_minimum_order_amount() {
    // Set this variable to specify a minimum order value
    $minimum = 50;

    if ( (WC()->cart->total <= $minimum) && !empty($woocommerce->cart->applied_coupons) ) {

        if( is_cart() ) {

            wc_print_notice( 
                sprintf( 'Your current order total is %s — you must have an order with a minimum of %s to place your order ' , 
                    wc_price( WC()->cart->total ), 
                    wc_price( $minimum )
                ), 'error' 
            );

        } else {

            wc_add_notice( 
                sprintf( 'Your current order total is %s — you must have an order with a minimum of %s to place your order' , 
                    wc_price( WC()->cart->total ), 
                    wc_price( $minimum )
                ), 'error' 
            );

        }
    }
}

【问题讨论】:

    标签: php wordpress plugins woocommerce hook-woocommerce


    【解决方案1】:

    您可以计算订单总金额小于或等于最小金额,如果返回true表示订单总金额为500或小于500,则可以显示错误信息。 p>

    if ( (WC()->cart->total <= $minimum) && !empty($woocommerce->cart->applied_coupons) ) {
       // PRINT ERROR MESSAGE
    } else {
       // DO YOUR CODE
    }
    

    希望它有效!

    【讨论】:

    • 这听起来是正确的方法!但是,我尝试更新 if 语句但没有运气。我已经更新了有问题的代码,只是为了确保你的意思应该是这样写的:)
    • 是的,我是认真的,但如果它不起作用,我认为我们需要获取优惠券代码的金额并将其与我们设置的最小值进行比较,以获得解决方案。你觉得对吗?
    • 喜欢,如果 ((WC()->cart->total cart->applied_coupons) ) && ( $woocommerce->cart ->applied_coupons->value
    【解决方案2】:

    也许是这样的?

    // MINIMUM ORDER AMOUNT
    
    add_action( 'woocommerce_checkout_process', 'wc_minimum_order_amount' );
    add_action( 'woocommerce_before_cart' , 'wc_minimum_order_amount' );
    
    function wc_minimum_order_amount() {
        // Set variables
        $minimum = 500;
        global $woocommerce;
    
        if ( (WC()->cart->total <= $minimum) && isset($woocommerce->cart->applied_coupons) ) {
    
            if( is_cart() ) {
    
                wc_print_notice( 
                    sprintf( 'NB! Vi sender ikke bestillinger ud under %s, din nuværende total er %s.' , 
                        wc_price( $minimum ), 
                        wc_price( WC()->cart->total )
                    ), 'error' 
                );
    
            } else {
    
                wc_add_notice( 
                    sprintf( 'NB! Vi sender ikke bestillinger ud under %s, din nuværende total er %s.' , 
                        wc_price( $minimum ), 
                        wc_price( WC()->cart->total )
                    ), 'error' 
                );
    
            }
        }
    
    }
    

    【讨论】:

    • 谢谢你,马德斯!不幸的是,它没有任何区别......
    • 现在呢?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-19
    • 1970-01-01
    • 2015-05-14
    相关资源
    最近更新 更多