在Woocommerce中通过优惠券打折的展示购物车商品小计

时间:2018-12-09 05:12:57

标签: php wordpress woocommerce cart coupon

我正在尝试在购物车商品上添加“优惠券折扣”,但我可以这样做,但是问题是我不想伸出没有优惠券折扣商品的商品。

当前,看起来像这样

enter image description here

但是我希望它看起来像这样。

enter image description here

用简单的话来说,我希望只伸出应用了折扣/优惠券折扣且其他价格不变的购物车商品。

这是我当前在function.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 :(得分:1)

购物车中已经有一些相关的功能可以帮助降低优惠券,并简化您的工作。总共有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