Прогрессивная фиксированная купонная скидка в зависимости от количества товара в Woocommerce - PullRequest
0 голосов
/ 04 июля 2018

У меня есть одна маленькая проблема, которая не знает, как исправить себя. Я хочу использовать эту логику в своем магазине Woocommerce только для одного продукта.

У меня есть такая ссылка для автоматического применения кода купона и добавления в корзину:

https://testsite.com/checkout/?add-to-cart=Product_ID&quantity=1&coupon=Coupon_Code

и это похоже на работу, когда количество равно 1. Но я хочу скидку (30%), которая автоматически размещается при нажатии на прямую ссылку, чтобы сделать динамический, например:

  • Увеличьте количество до 2 на странице корзины и автоматически купон для расчета 2 x 30$ = 60$ скидка,
  • купите 3 из того же продукта и рассчитайте 3 X 30$ = 90$ купон на скидку и так далее ..

Я искал и нашел эту полезную ветку, но там ситуация немного отличается от моей.

Как я могу получить конкретный купон? Несколько советов или начальная точка. Спасибо

1 Ответ

0 голосов
/ 04 июля 2018

Это возможно с этими 2 шагами:

1) Добавить уникальный купон с:

  • В общих настройках> Тип = Фиксированная скидка на продукт
  • В общих настройках> Сумма = 30
  • В Ограничениях на использование> Продукты ==> установите желаемый продукт (s)

2) Добавьте этот код (где вы будете устанавливать код своего купона в функции (в нижнем регистре)):

add_filter( 'woocommerce_coupon_get_discount_amount', 'custom_coupon_get_discount_amount', 10, 5 );
function custom_coupon_get_discount_amount( $rounded_discount, $discounting_amount, $cart_item, $single, $coupon ){

    ## ---- Your settings ---- ##

    // Related coupons codes to be defined in this array (you can set many)
    $coupon_codes = array('30perqty');

    ## ------ The code ------- ##

    if ( $coupon->is_type('fixed_product') && in_array( $coupon->get_code(), $coupon_codes ) && $cart_item['quantity'] > 1 ) {
        if( in_array( $cart_item['product_id'], $coupon->get_product_ids() ) ){
            $discount = (float) $coupon->get_amount() * (int) $cart_item['quantity'];
            $round = round( min( $discount, $discounting_amount ), wc_get_rounding_precision() );
        }
    }
    return $rounded_discount;
}

Код помещается в файл function.php вашей активной дочерней темы (или активной темы). Проверено и работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...