Ilustrace k článku

WooCommerce: Zástupný symbol pro sazbu daně u produktu

Snippety, WooCommerce

Jeden z mých klientů má několik produktů, které spadají do různých daňových tříd a kromě hlášky „99 Kč včetně DPH“ chce uvádět i informaci, jestli se jedná o sazbu 15 % nebo 21 %, tak jak to má nastavené v daňových třídách (pokud nevíte, jak na to, podívejte se sem).
„Přípona za zobrazením ceny“ (najdete ve WooCommerce > Nastavení  > Daň > Nastavení daně) vám poměrně jednoduše umožní zobrazit cenu s nebo bez DPH. Problém ale nastává, pokud chcete zobrazit samotnou výši (sazbu) nebo název daně, kterou máte nastavenou.

Přijde mi to jako poměrně banální věc, která ale nejde standardně nikde nastavit. Kvůli tomu jsem napsala následující snippet, který danou funkcionalitu do WooCommerce přidá. Pomocí zástupných symbolů {tax_rate} a {tax_rate_label} můžete vložit hodnotu sazby a(nebo) její název. Funkcionalita je stejná jako standardní  WooCommerce {price_including_tax} a {price_excluding_tax} .
Postup je jednoduchý – vložte následující kód do functions.php své child šablony* a nahrajte ho na svůj web a upravte si nastavení WooCommerce. *Pokud nevíte, jak na odvozenou šablonu, tak návod najdete v tomto příspěvku.

Komentáře (3)

  1. Ahoj, v prvom rade Ďakujem za radu s daňami, všetko správne funguje. Chcem sa opýtať, ako sa dá spraviť aby tie dane boli v novom riadku. Aby napr. cena s dph bez dph boli v jednom a tá daň napr. 20% bola na novom. Teraz to napíše všetko v jednom riadku.

  2. Ja som ešte našiel toto, doplňujúce ku kódu čo dala Karolína. Je to kód aby tie ceny s/bez dph a ešte aj výšku dane zobrazovalo pri variáciach produktov s rovnakou cenou, pretože to ináč zmizlo. Tak ak sa Karolína nenahnevá prikladám kód, ktorý som vložil pod ten od Karolíny do function.php.

    add_filter('woocommerce_get_price_suffix', function ( $html, $product, $price, $qty ) {
         if ( ! $html && $product instanceof WC_Product_Variable) {
             // Copied from plugins/woocommerce/includes/abstracts/abstract-wc-product.php#get_price_suffix
             if ( ( $suffix = get_option( 'woocommerce_price_display_suffix' ) ) 
                 && wc_tax_enabled() 
                 && 'taxable' === $product->get_tax_status() 
             ) {
                 $replacements = array(
                     '{price_including_tax}' => wc_price( wc_get_price_including_tax( $product, array( 'qty' => $qty, 'price' => $price ) ) ),
                     '{price_excluding_tax}' => wc_price( wc_get_price_excluding_tax( $product, array( 'qty' => $qty, 'price' => $price ) ) ),
                 );
                 $html = str_replace( array_keys( $replacements ), array_values( $replacements ), ' ' . wp_kses_post( $suffix ) . '' );
             }
         }
     
         return $html;
    }, 10, 4);

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *