Klient użył kodu rabatowego – pokaż mu obniżone ceny w sklepie

Przypadek dość ciekawy, bo mający bezpośredni wpływ na konwersję w sklepie. Scenariusz mamy taki klient robiąc zakupy wpisuje w koszyku kod rabatowy. Zachęcony sporą obniżką, udaje się na dalsze zakupy po naszym sklepie a tu ceny nadal pierwotne. Fajnie byłoby mu pokazać ile rzeczywiście zapłaci, bo wtedy może kupi więcej. Wykorzystamy do tego filtr woocommerce_get_price_html.

[php]
add_filter(’woocommerce_get_price_html’, 'woocommerce_get_price_html’, 10, 2 );
function woocommerce_get_price_html( $price, $product ) {
if ( WC()->cart->has_discount() ) {
$values = array (
'data’ => $product,
'quantity’ => 1
);
$coupons = WC()->cart->get_coupons();

$_price = $product->get_price();
$undiscounted_price = $_price;
 
if ( ! empty( $coupons ) ) { 
foreach ( $coupons as $code => $coupon ) {
 
if ( $coupon->is_valid() && ( $coupon->is_valid_for_product( $product, $values ) || $coupon->is_valid_for_cart() ) ) {
$discount_amount = $coupon->get_discount_amount( 'yes’ === get_option( 'woocommerce_calc_discounts_sequentially’, 'no’ ) ? $_price : $undiscounted_price, $values, true );
$discount_amount = min( $_price, $discount_amount );
$_price = max( $_price – $discount_amount, 0 );

if ( 0 >= $_price ) {
break;
}
}
if ( ( $product->get_price() > 0 ) && ( $undiscounted_price !== $_price ) )
$price = wc_format_sale_price( wc_get_price_to_display( $product, array( 'price’ => $undiscounted_price ) ), $_price ) . $product->get_price_suffix();
}

return $price;
}
[/php]

Przewijanie do góry