Скидка купона рассчитывается по обычной цене для всех типов товаров в Woocommerce - PullRequest
0 голосов
/ 06 декабря 2018

Я установил глобальную скидку 20% на все мои продукты woocommerce.Мне нужно создать процентный купон для корзины, который будет применяться к обычной цене продукта, а не к скидке 20%.

Я нашел следующий код:

add_filter('woocommerce_coupon_get_discount_amount', 'woocommerce_coupon_get_discount_amount', 10, 5 );
function woocommerce_coupon_get_discount_amount( $discount, 
$discounting_amount, $cart_item, $single, $coupon ) {
if ($coupon->type == 'percent_product' || $coupon->type == 'percent') {
    global $woocommerce;
    $cart_total = 0;

    foreach ( $woocommerce->cart->get_cart() as $cart_item_key => $cart_item ) {

     $variable_product1= new WC_Product_Variation( $cart_item["variation_id"] );

     $cart_total += $variable_product1 ->regular_price * $cart_item['quantity'];
    } 
    $discount = round( ( $cart_total / 100 ) * $coupon->amount, $woocommerce->cart->dp );
    return $discount;
}
return $discount;
}

Однакокажется, работает только для переменных продуктов в корзине.Как это можно изменить для работы как с переменными, так и с простыми продуктами в корзине?Спасибо.

1 Ответ

0 голосов
/ 07 декабря 2018

Ваш код действительно устарел, с некоторыми ошибками и ошибками.Я обновил код и внес изменения, чтобы он работал для всех типов продуктов:

add_filter('woocommerce_coupon_get_discount_amount', 'filter_coupon_discount_amount', 10, 5 );
function filter_coupon_discount_amount( $discount, $discounting_amount, $cart_item, $single, $coupon ) {
    if ( $coupon->is_type('percent_product') || $coupon->is_type('percent') ) {
        $cart_total = 0;

        foreach ( WC()->cart->get_cart() as $cart_item ) {
            $product = $cart_item['data'];
            $cart_total += $product->get_regular_price() * $cart_item['quantity'];
        }

        if( $cart_total > 0 )
            $discount = round( ( $cart_total / 100 ) * $coupon->get_amount(), WC()->cart->dp );
    }
    return $discount;
}

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

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