【问题标题】:woocommerce applying cart couponswoocommerce 应用购物车优惠券
【发布时间】:2013-08-30 21:14:56
【问题描述】:

我目前正在为 woocommerce 开发一个插件,如果购物车的总数介于 2 个值之间,则使用以下代码添加折扣代码:

add_action('woocommerce_before_cart', 'woobd_add_discount_if_enabled');

function woobd_add_discount_if_enabled()
{
    global $woocommerce;
    if ($woocommerce->cart->cart_contents_total >= 10
        && $woocommerce->cart->cart_contents_total <= 100
    ) {
        $woocommerce->cart->add_discount('layer1_discount');
    } else {        
        $woocommerce->cart->remove_coupons('layer1_discount');
        $woocommerce->cart->calculate_totals();
    }
}

上面的工作正常,但是我想添加另一个这样的 if 语句,它会添加另外 2 个值:

add_action('woocommerce_before_cart', 'woobd_add_discount_if_enabled');

function woobd_add_discount_if_enabled()
{
    global $woocommerce;
    if ($woocommerce->cart->cart_contents_total >= 10
        && $woocommerce->cart->cart_contents_total <= 100
    ) {
        $woocommerce->cart->add_discount('layer1_discount');
    } else {        
        $woocommerce->cart->remove_coupons('layer1_discount');
        $woocommerce->cart->calculate_totals();
    }

    if ($woocommerce->cart->cart_contents_total >= 100
        && $woocommerce->cart->cart_contents_total <= 200
    ) {
        $woocommerce->cart->add_discount('layer2_discount');
    } else {        
        $woocommerce->cart->remove_coupons('layer2_discount');
        $woocommerce->cart->calculate_totals();
    }
}

由于某种原因,仅检测到第二个 if 语句,完全忽略了第一个。以上有什么明显的问题吗?

【问题讨论】:

    标签: php woocommerce


    【解决方案1】:

    也许如果您将两个单独的语句更改为 if、elseif、else - 它会起作用。

    add_action('woocommerce_before_cart', 'woobd_add_discount_if_enabled');
    
    function woobd_add_discount_if_enabled()
    {
        global $woocommerce;
        if ($woocommerce->cart->cart_contents_total >= 10
            && $woocommerce->cart->cart_contents_total <= 100
        ) {
            $woocommerce->cart->add_discount('layer1_discount');
        } elseif ($woocommerce->cart->cart_contents_total >= 100
            && $woocommerce->cart->cart_contents_total <= 200
        ) {        
            $woocommerce->cart->add_discount('layer2_discount');
        } else {        
            $woocommerce->cart->remove_coupons('layer1_discount');
            $woocommerce->cart->remove_coupons('layer2_discount');
            $woocommerce->cart->calculate_totals();
        }
    
    
    }
    

    【讨论】: