Woocommerce показывает цену, включая налог, в каталоге продуктов

Я хочу показать цену продукта, включая налог и исключая налог, по каждому продукту на странице каталога моего магазина Woocommerce.

Он уже работает, но ничего не показывает для переменных продуктов, где у меня есть только один вариант. На отдельных продуктах это тоже работает.

Также я получаю уведомление:

Примечание: WC_Product :: get_price_including_tax ist seit Version 3.0 veraltet! Benutze stattdessen wc_get_price_including_tax.

Примечание: WC_Product :: get_price_excluding_tax ist seit Version 3.0 veraltet! Benutze stattdessen wc_get_price_excluding_tax.

Но если я это сделаю, это вообще не работает.

add_action( 'woocommerce_after_shop_loop_item_title', 'preise_notice', 10 );
 
function preise_notice() {
 global $product;

    if ( $price_html_incl_tax = $product->get_price_including_tax() )
    if ( $price_html_excl_tax = $product->get_price_excluding_tax() )   {
        
        echo '<div class="product-prices-excl-vat"><a>ab ' . wc_price($price_html_excl_tax) . ' netto</a></div>';
        echo '<div class="product-prices-incl-vat"><a>(' . wc_price($price_html_incl_tax) . ' inkl. 19% MwSt.)</a></div>';
    }
}

person Jorn    schedule 24.06.2020    source источник


Ответы (1)


Функции wc_get_price_including_tax и wc_get_price_excluding_tax ожидают $product в качестве аргумента. Так что вам придется пройти это так:

wc_get_price_including_tax( $product )

Также кажется хорошей идеей получить налоговую ставку продукта вместо того, чтобы жестко ее кодировать. Возможно, в будущем у вас будут продукты, для которых налоговая ставка не будет 19%. Я также включил аргумент валюты в функцию wc_price, чтобы цена отображалась в валюте магазина.

Вы можете использовать следующий фрагмент, который получит налоговую ставку продукта и распечатает цены, включая налог и исключая:

add_action( 'woocommerce_after_shop_loop_item_title', 'add_product_price_incl_and_excl_tax', 10 );
function add_product_price_incl_and_excl_tax() {

    global $product;
    $tax_rate = '';
    $tax_rates = WC_Tax::get_rates( $product->get_tax_class() );

    //Check the product tax rate
    if ( !empty( $tax_rates ) ) {
        $tax_rate = reset($tax_rates);
        $tax_rate = sprintf( ' inkl. %.0f%% MwSt.', $tax_rate['rate'] );
     }

    //Print product prices including tax and tax percentage, and excluding tax
    printf( '<div class="product-prices-excl-vat">ab %s netto</div>', wc_price( wc_get_price_excluding_tax( $product ), array( 'currency' => get_woocommerce_currency() ) ) );
    printf( '<div class="product-prices-incl-vat">%s%s</div>', wc_price( wc_get_price_including_tax( $product ), array( 'currency' => get_woocommerce_currency() ) ), $tax_rate );

}
person Terminator-Barbapapa    schedule 26.06.2020