Скидка на основе суммы корзины в Woocommerce

Я попытаюсь изменить процент скидки на основе 3 разных

Например:

  1. если покупатель потратит >= 200 000, у него будет скидка 10%
  2. если костюмер потратит >= 350.000, он получит скидку 15%
  3. если покупатель потратит >= 500 000, он получит скидку 20%

вопрос в том, как я могу применить эту скидку в выбранном продукте? и как сделать это вручную, я имею в виду, что скидка работает, когда покупатель вводит код ваучера в доступную колонку?

это мой код до сих пор

add_action( 'woocommerce_cart_calculate_fees', 'discount_based_on_total', 
25, 1 );
function discount_based_on_total( $cart ) {

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

$total = $cart->cart_contents_total;

// Percentage discount (10%)
if( $total >= 200000 )
   $discount = $total * 0.1;
if( $total >= 350000 )
    $discount = $total * 0.15;
if( $total >= 500000 )
    $discount = $total * 0.20;
$cart->add_fee( __('discount', 'woocommerce'), -$discount );
}

person angga    schedule 20.05.2018    source источник
comment
да, я знаю, но эта скидка применяется автоматически, как сделать это вручную, я имею в виду, что скидка работает, когда покупатель вводит код ваучера в доступную колонку?   -  person angga    schedule 20.05.2018


Ответы (1)


Вы также должны добавить верхний предел для первых двух условий. В противном случае вы можете попасть в несколько условий if.

Например, 390 КБ больше 200 КБ, а также больше 350 КБ.

add_action( 'woocommerce_cart_calculate_fees', 'discount_based_on_total',25, 1 );
function discount_based_on_total( $cart ) {

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

    $total = $cart->cart_contents_total;

    // Percentage discount (10%)
    if( $total >= 200000 && $total < 350000 ){
       $discount = $total * 0.1;
    }
    else if( $total >= 350000  && $total < 500000 ){
        $discount = $total * 0.15;
    }
    else if( $total >= 500000 ){
        $discount = $total * 0.20;
    }
    else{
        $discount = 0;
    }

    $cart->add_fee( __('discount', 'woocommerce'), -$discount );
}
person curiousBoy    schedule 20.05.2018
comment
Если вы переупорядочиваете свои чеки, вам не нужно добавлять верхние пределы: if ( $total >= 500000 ){ $discount = $total * 0.20; } else if( $total >= 350000 ){ $discount = $total * 0.15; } elseif( $total >= 200000 ){ $discount = $total * 0.1; } else { $discount = 0; } - person Camwyn; 14.10.2018