Když začnete používat slevy ve vašem WooCommerce e-shopu, tak zjistíte, že se cena před slevou a cena po slevě zobrazuje pouze v produktových kategoriích a přímo v detailu produktu.
Toto zobrazení slevy se už nerozepisuje v košíku a pokladně. Docílit toho není složité, stačí použít připravený kód a uživatelé budou mít cenu před a po slevě zobrazenou po celou dobu nákupního procesu.
Zobrazení slevy v košíku
/**
* Zobrazení ceny se slevou v košíku.
*/
function my_custom_show_sale_price_at_cart( $old_display, $cart_item, $cart_item_key ) {
/** @var WC_Product $product */
$product = $cart_item['data'];
if ( $product ) {
return $product->get_price_html();
}
return $old_display;
}
add_filter( 'woocommerce_cart_item_price', 'my_custom_show_sale_price_at_cart', 10, 3 );
Zobrazení slevy v košíku i v pokladně
Kód pro zobrazení slevy v košíku a zároveň i v pokladně je poměrně delší, měl by si poradit i s DPH, pokud tuto možnost máte v e-shopu zapnutou. Nicméně jsme to testovali na e-shopu, který na DPH nastaven není.
/**
* Zobrazení ceny se slevou v košíku i pokladně.
*/
add_filter( 'woocommerce_cart_item_subtotal', 'show_sale_price_at_checkout', 10, 3 );
function show_sale_price_at_checkout( $subtotal, $cart_item, $cart_item_key ) {
// gets the product object
$product = $cart_item['data'];
// get the quantity of the product in the cart
$quantity = $cart_item['quantity'];
// check if the object exists
if ( ! $product ) {
return $subtotal;
}
// check if the product is on sale
if ( $product->is_on_sale() && ! empty( $product->get_sale_price() ) ) {
// shows sale price and regular price
$price = wc_format_sale_price (
// regular price
wc_get_price_to_display(
$product, array(
'price' => $product->get_regular_price(),
'qty' => $quantity
)
),
// sale price
wc_get_price_to_display( $product, array (
'price' => $product->get_sale_price(),
'qty' => $quantity
)
)
) . $product->get_price_suffix();
} else {
// shows regular price
$price = wc_price (
// regular price
wc_get_price_to_display(
$product, array (
'price' => $product->get_regular_price(),
'qty' => $quantity
)
)
) . $product->get_price_suffix();
}
return $price;
}
Kde kód (snippet) vložit
Vybraný snippet vložíte do WordPressu, když v administraci zvolíte záložky Vzhled -> Editor souboru šablony a otevřete soubor Funkce šablony (functions.php). Vhodné je, pokud máte nainstalovanou tzv. child šablonu a kód vkládáte přímo do jejího functions.php.
*Před vložením jakéhokoli dodatečného kódu, byste si měli udělat kompletní zálohu vašeho webu pro případ komplikací. Dále je také vhodné zkoušet nové úpravy na testovací verzi webu.