Отображение промежуточного итога корзины покупок при скидке купоном в Woocommerce - PullRequest
0 голосов
/ 09 декабря 2018

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

В настоящее время, Это выглядит так

enter image description here

Но я хочу, чтобы это выглядело так.

enter image description here

Проще говоря, я хочу выделить только тот элемент корзины, к которому применена скидка / скидка по купону, а цена других товаров осталась прежней.

Вот мой текущий код в функции.php

add_filter( 'woocommerce_cart_item_subtotal', 'show_coupon_item_subtotal_discount', 99, 3 );
function show_coupon_item_subtotal_discount( $subtotal, $cart_item, $cart_item_key ){
global $woocommerce;
if ( $woocommerce->cart->has_discount( $coupon_code )) {
$newsubtotal = wc_price( woo_type_of_discount( $cart_item['line_total'], $coupon->discount_type, $coupon->amount ) );
$subtotal = sprintf( '<s>%s</s> %s', $subtotal, $newsubtotal ); 
}
return $subtotal;

}


function woo_type_of_discount( $price, $type, $amount ){
switch( $type ){
case 'percent_product':
$newprice = $price * ( 1 - $amount/100 );
break;
case 'fixed_product':
$newprice = $price - $amount;
break;
case 'percent_cart':
$newprice = $price * ( 1 - $amount/100 );
break;
case 'fixed_cart':
$newprice = $price - $amount;
break;
default:
$newprice = $price;
}

return $newprice;
}

1 Ответ

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

В корзине уже есть некоторые связанные функции, которые помогают при скидках на купоны и которые упростят то, что вы пытаетесь сделать.Всего доступно 2 товара:

  • 'line_subtotal' - это общая сумма по недисконтированной корзине *
  • 'line_total' - это общая сумма по дисконтной корзине

Таким образом, нет необходимости во внешней функции, а также для определения, применяется ли купон или нет.Таким образом, функциональный код будет очень компактным для получения нужного изображения:

add_filter( 'woocommerce_cart_item_subtotal', 'show_coupon_item_subtotal_discount', 100, 3 );
function show_coupon_item_subtotal_discount( $subtotal, $cart_item, $cart_item_key ){
    if( $cart_item['line_subtotal'] !== $cart_item['line_total'] ) {
        $subtotal = sprintf( '<del>%s</del> <ins>%s<ins>',  wc_price($cart_item['line_subtotal']), wc_price($cart_item['line_total']) );
    }
    return $subtotal;
}

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

enter image description here

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