Я пытаюсь показать цены в зависимости от страны покупателя (цена с учетом налога в стране). Это прекрасно работает. Клиент платит всегда € 119,00, где бы он ни жил. Только налог корректируется.
Это работает только со следующим кодом:
add_filter( 'woocommerce_adjust_non_base_location_prices', '__return_false' );
Теперь у меня есть следующая задача: Есть страны с нулевым налогом, потому что они платят налог в своей стране (например, в Норвегии). Если ставка налога составляет 0%, я хочу взимать цену без налога (стандартная ставка нашего магазина составляет 19%) - в случае Норвегии это просто € 100,00.
Поэтому я попробовал следующий код:
function disable_woo_vat_adjustment(){
$total_tax = WC()->cart->get_subtotal_tax();
if( isset( $total_tax ) && $total_tax > 0 ){
add_filter( 'woocommerce_adjust_non_base_location_prices', '__return_false' );
}
}
do_action( 'after_setup_theme', 'disable_woo_vat_adjustment' );
Этот код все еще работает для Норвегии, цена € 100,00, и это правильно. Но теперь цена для всех других стран неверна, потому что цена не всегда одинакова (€ 119,00), вместо этого она составляет € 100,00 + налог (для Австрии 20,00% => € 120,00 вместо € 119,00).
Я попытался добавить вторую проверку в предложении if:
function disable_woo_vat_adjustment(){
$total_tax = WC()->cart->get_subtotal_tax();
if( isset( $total_tax ) && !empty( $total_tax ) && $total_tax > 0 ){
add_filter( 'woocommerce_adjust_non_base_location_prices', '__return_false' );
}else{
remove_filter( 'woocommerce_adjust_non_base_location_prices', '__return_false' );
}
}
do_action( 'after_setup_theme', 'disable_woo_vat_adjustment' );
Я также пытался не удалять функцию, но установить фильтр на __return_true в состоянии else, но не сделал работать также для всех других стран (например, в Австрии).
Что мне не хватает?
Спасибо.