Добавьте таможенное значение налога при оформлении заказа woocommerce

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

//Add tax for CH country
add_action( 'woocommerce_cart_calculate_fees','woocommerce_custom_surcharge' );
function woocommerce_custom_surcharge() {
global $woocommerce;

if ( WC()->customer->get_shipping_country('CH') )
return;

$percentage = 0.08;
$taxes = array_sum($woocommerce->cart->taxes);
$surcharge = ( $woocommerce->cart->cart_contents_total + $woocommerce->cart->shipping_total ) * $percentage;
// Make sure that you return false here.  We can't double tax people!
$woocommerce->cart->add_fee( 'TAX', $surcharge, false, '' );

}

Я уверен, что я делаю не так внутри:

if ( WC()->customer->get_shipping_country('CH') )

Спасибо за помощь

1

Решение

WC_Customer get_shipping_country() не принимает код страны как вы получаете код страны. Таким образом, вам нужно установить его по-другому в вашем состоянии кода.

Кроме того, поскольку ваша подключенная функция уже имеет объект WC_Cart в качестве аргумента, вам не нужно глобальное $woocommerce а также $woocommerce->cart

Итак, ваш повторный код должен быть:

// Add tax for Swiss country
add_action( 'woocommerce_cart_calculate_fees','custom_tax_surcharge_for_swiss', 10, 1 );
function custom_tax_surcharge_for_swiss( $cart ) {
if ( is_admin() && ! defined('DOING_AJAX') ) return;

// Only for Swiss country (if not we exit)
if ( 'CH' != WC()->customer->get_shipping_country() ) return;

$percent = 8;
# $taxes = array_sum( $cart->taxes ); // <=== This is not used in your function

// Calculation
$surcharge = ( $cart->cart_contents_total + $cart->shipping_total ) * $percent / 100;

// Add the fee (tax third argument disabled: false)
$cart->add_fee( __( 'TAX', 'woocommerce')." ($percent%)", $surcharge, false );
}

Код помещается в файл function.php вашей активной дочерней темы (или темы) или также в любой файл плагина.

Проверено и работает … вы получите что-то вроде:

введите описание изображения здесь


Но для налогов лучше использовать стандартную налоговую функцию WooCommerce в Настройки> Налог (вкладка), где con может установить налоговые ставки для каждой страны …

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]