Zobrazenie 0 Eur pri doprave, ak je doprava zadarmo

Obtiažnosť:
Začiatočník
Pokročilý
Skúsený
Expert

Vo WooCommerce (po novom Woo) pri nastavení dopravy zadarmo v pokladni nie je zobrazená žiadna cena. Taktiež, ak je doprava nastavená ako zadarmo a sú splnené určité podmienky (napr. dosiahnutie určitej ceny, použitie kupónu alebo akcia…), cena sa nezobrazí. Toto môže spôsobiť otázky u niektorých zákazníkov, či skutočne majú nárok na dopravu zadarmo. Z tohto dôvodu je najjednoduchšie pri takejto forme dopravy zobraziť cenu 0 eur.

# Zobrazenie 0 Eur pri doprave zadarmo na stránke pokladni

Toto je jednoduchý snippet, ktorý pridá na stránke pokladni za dopravu zadarmo 0 Eur:

/*
 * Zobrazenie nulovej ceny za dopravu na stránke pokladni
 *
 * @author PeterB aka Viking
 * @url https://wp-admin.sk/snippets/zobrazenie-0-eur-pri-doprave-ak-je-doprava-zadarmo/#doprava-pokladna
 *
 * @param $shipping | string
 * @param $order | object
 * @param $tax_display | string
 * 
 * @return $shipping | string
 */
function viking_display_zero_on_free_shipping( $shipping, $order, $tax_display ) {
   if ( ! ( 0 < abs( ( float ) $order->get_shipping_total() ) ) && $order->get_shipping_method() ) {
      $shipping .= ': ' . wc_price( 0 );
   }
   return $shipping;
}
add_filter( 'woocommerce_order_shipping_to_display', 'viking_display_zero_on_free_shipping', 10000, 3 );

V snippete sme použili filter woocommerce_order_shipping_to_display, ktorý nám ponúka 3 parametre: $hipping – popis dopravy, $order – objekt objednávky a $tax_display – nastavenie dane (bez / s daňou). Skontrolujeme, či cena za dopravu je 0. Pomocou metódy get_shipping() objektu $order. Pri zisťovaní používame php funkciu abs(), ktorá zaistí absolútnu hodnotu získanej ceny za dopravu a pomocou pretypovania ( float ) zabezpečíme, že získané číslo bude číslo typu float. Pre úplnosť, ešte musíme skontrolovať, či existuje doprava, pomocou metódy get_shipping_method().
Ak zistíme, že doprava je naozaj zadarmo, môžme k názvu dopravy pridať zobrazenie dopravy zadarmo. V tomto prípade sme použili formátovaciu funkciu wc_price(), ktorá nám vráti správne naformátovanú cenu.

# Zobrazenie 0 Eur pri doprave zadarmo na stránke košíka

Ak máte povolený výpočet dopravy aj na stránke košíka, tak je vhodné túto úpravu pridať aj tam. Pomocou tohto snippetu, pridáte zobrazenie nulovej ceny v košíku:

/**
 * Zobrazenie nulovej ceny na stránke košíka
 *
 * @author PeterB aka Viking
 * @url https://wp-admin.sk/snippets/zobrazenie-0-eur-pri-doprave-ak-je-doprava-zadarmo/#doprava-kosik
 
 * @param $label | string
 * @param $method | object
 *
 * @return $label | string
 */
function viking_display_zero_shipping_cart( $label, $method ) {
   if ( ! ( $method->cost > 0 ) ) {
      $label .= ': ' . wc_price( 0 );
   }
   return $label;
}
add_filter( 'woocommerce_cart_shipping_method_full_label', 'viking_display_zero_shipping_cart', 10000, 2 );

V tomto druhom snippete použijeme filter woocommerce_cart_shipping_method_full_label, ktorý nám poskytuje $label – štítok dopravy a $method – objekt dopravy. Zistíme cenu dopravy, ktorá je uložená v premennej cost a ak nie je väčšia ako 0, potom pridáme k názvu dopravy zobrazenie 0 Eur, pomocou formátovacej funkcie wc_price().


Tento snippet môžte umiestniť do functions.php vašej aktuálnej témy, ale vhodnejšie je si na to vytvoriť vlastný plugin. Viac o vytvorení pluginu, nájdete TU.

5 1 vote
Hodnotenie článku
Autor
Navigácia
Odoberať
Upozorniť na
guest
0 Komentáre
Inline Feedbacks
View all comments