Zobrazení ceny se slevou v košíku a pokladně ve WooCommerce

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.

Řazení produktů, které nejsou skladem na konec ve WooCommerce
Přeskočení košíku a přesměrování rovnou do pokladny

Potřebujete pomoct s WordPressem?

Líbil se vám článek? Sdílejte ho s přáteli

Autor

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.

Vyplňte toto pole
Vyplňte toto pole
Zadejte prosím platnou e-mailovou adresu.

Menu