0

私は現在 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();
    }
}

上記は正常に機能しますが、別の 2 つの値を追加するこのような別の if ステートメントを追加したいと思います。

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();
    }
}

何らかの理由で、2 番目の if ステートメントのみが検出され、最初のステートメントは完全に無視されます。上記の内容で何かおかしくないですか?

4

1 に答える 1

1

おそらく、2 つの別個のステートメントを 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();
    }


}
于 2013-10-18T19:31:11.757 に答える