У меня есть функция, которая применяет другую налоговую ставку в зависимости от роли пользователя.
function wc_diff_rate_for_user( $tax_class, $product ) {
if ( is_user_logged_in() && current_user_can( 'dealer-price-level' ) ) {
$tax_class = 'Zero Rate';
}
return $tax_class;
}
add_filter( 'woocommerce_product_get_tax_class', 'wc_diff_rate_for_user', 1, 2 );
Однако она работает только для простых продуктов.
Для вариантов продуктов она нене применять налоговый класс "Нулевая ставка".
Мне пришлось добавить ручное исправление непосредственно в плагин WooCommerce.
A.Откройте /wp-content/plugins/woocommerce/includes/class-wc-product-variation.php
B.Найти строку ....
$value = $this->parent_data['tax_class'];
C.Замените на ...
if ( is_user_logged_in() && current_user_can( 'dealer-price-level' ) ) {
$tax_class = 'Zero Rate';
} else {
$value = $this->parent_data['tax_class'];
}
Я знаю, что это смертный грех, потому что код будет потерян при обновлении.
Но я совершенно потерян, как найти долгосрочное исправление,
Любой совет приветствуется.