Články

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

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…

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.

sazba nazev dane

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.

<?php
/**
* @snippet Tax placeholders for Price Display Suffix | WooCommerce
* @comment Use "{tax_rate}" and "{tax_rate_label}" placeholder for displaying the product tax rate and its label
* @source https://gist.github.com/vyskoczilova/2ff56afcfd4c75338fb7f0be3a5615c2
* @author Karolína Vyskočilová (https://kybernaut.cz)
* @testedwith WooCommerce 4.2
*/
// ——————-
add_filter( 'woocommerce_get_price_suffix', 'replacement_for_tax_class_name', 99, 4 );
function replacement_for_tax_class_name( $html, $product, $price, $qty ){
$tax_rates = WC_Tax::get_rates( $product->get_tax_class() );
$tax_rate_value = '';
$tax_rate_label = '';
if(!empty($tax_rates)){
foreach($tax_rates as $tax ){
$tax_rate_value = rtrim($tax['rate'], "0");
$tax_rate_value = rtrim($tax_rate_value, ".");
$tax_rate_label = $tax['label'];
}
}
$replacements = array(
'{tax_rate}' => $tax_rate_value,
'{tax_rate_label}' => $tax_rate_label,
);
$html = str_replace( array_keys( $replacements ), array_values( $replacements ), $html );
return $html;
}