Фрагменты кода для настройки специальных налоговых сценариев

Сценарий A: Одинаковая цена независимо от местоположения и налогов

Если в магазине цены указаны с учетом налогов, но используются разные налоговые ставки в зависимости от региона, итоговая цена может выглядеть по-разному.
На самом деле базовая цена остаётся прежней — меняется только сумма налога.

Некоторые владельцы магазинов предпочитают динамически менять базовую цену, чтобы итоговая стоимость оставалась одинаковой независимо от налоговой ставки.

Добавьте этот код в файл functions.php дочерней темы или через плагин (например, Code Snippets):

<?php
add_filter( 'woocommerce_adjust_non_base_location_prices', '__return_false' );

Сценарий B: Начисление налога только при достижении суммы

Этот код полезен, если налог должен применяться только после достижения определённой суммы заказа.
В примере ниже налог применяется только если сумма больше 110 (в валюте магазина).

<?php
add_filter( 'woocommerce_product_get_tax_class', 'custom_get_tax_class', 1, 2 );

function custom_get_tax_class( $tax_class, $product ) {
    if ( WC()->cart->subtotal <= 110 ) {
        $tax_class = 'Zero Rate';
    }
    return $tax_class;
}

Сценарий C: Разные налоговые ставки в зависимости от роли пользователя

Можно применять разные налоговые ставки в зависимости от роли пользователя (например, для оптовиков или освобождённых от налогов клиентов).

В примере ниже пользователи с ролью администратора получают налог с нулевой ставкой.

<?php
/**
 * Применяет другую налоговую ставку в зависимости от роли пользователя
 */
function wc_diff_rate_for_user( $tax_class, $product ) {
    if ( is_user_logged_in() && current_user_can( 'administrator' ) ) {
        $tax_class = 'Zero Rate';
    }
    return $tax_class;
}

add_filter( 'woocommerce_product_get_tax_class', 'wc_diff_rate_for_user', 1, 2 );
add_filter( 'woocommerce_product_variation_get_tax_class', 'wc_diff_rate_for_user', 1, 2 );

Сценарий D: Показывать налоги с нулевой ставкой

По умолчанию WooCommerce скрывает налоги со значением 0.
Чтобы отображать их, используйте следующий код:

add_filter( 'woocommerce_order_hide_zero_taxes', '__return_false' );

Сценарий E: Суффиксы цен для вариативных товаров

В WooCommerce можно добавлять суффиксы к ценам (например, «включая НДС»).
Они работают для вариаций товара, но по умолчанию отключены для основного вариативного товара,
так как это может повлиять на производительность.

Чтобы включить отображение, используйте фильтр:

add_filter( 'woocommerce_show_variation_price', '__return_true' );

Поделиться с друзьями
Документация WooCommerce