Программно отключить налоги для определенной роли пользователя

На моем веб-сайте woocommerce я включил налог в общих настройках WooCommerce.

Я хотел бы отключить налог для определенной роли пользователя программно (с помощью любых крючков) из моего магазина, страницы оформления заказа и из электронной почты с заказом.

Как я мог этого добиться?

Спасибо


person Simanto    schedule 11.10.2016    source источник


Ответы (1)


Обновление 2020 г.

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

Сначала вам нужно установить эту конкретную роль пользователя в worpress. В этом случае допустим, что эта пользовательская роль пользователя - 'resellers' для моего примера кода.

Во-вторых, вы должны включить в настройках WooCommerce нулевую налоговую ставку:

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

Затем для каждой страны вам нужно будет установить эту нулевую ставку налога:

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

Третье. Тогда эта функция поможет:

Обновление - начиная с WooCommerce 3 используйте следующее:

function zero_rate_for_custom_user_role( $tax_class, $product ) {
    // Getting the current user 
    $current_user = wp_get_current_user();
    $current_user_data = get_userdata($current_user->ID);
    
    //  <== <== <== <== <== <== <== Here you put your user role slug 
    if ( in_array( 'resellers', $current_user_data->roles ) )
        $tax_class = 'Zero Rate';

    return $tax_class;
}
add_filter( 'woocommerce_product_get_tax_class', 'wc_diff_rate_for_user', 10, 2 );
add_filter( 'woocommerce_product_variation_get_tax_class', 'wc_diff_rate_for_user', 10, 2 );

До версии 3 WooCommerce используйте следующее:

function zero_rate_for_custom_user_role( $tax_class, $product ) {
    // Getting the current user 
    $current_user = wp_get_current_user();
    $current_user_data = get_userdata($current_user->ID);
    
    //  <== <== <== <== <== <== <== Here you put your user role slug 
    if ( in_array( 'resellers', $current_user_data->roles ) )
        $tax_class = 'Zero Rate';

    return $tax_class;
}
add_filter( 'woocommerce_product_tax_class', 'zero_rate_for_custom_user_role', 10, 2 );

Вам просто нужно будет поставить вместо «реселлеров» желаемую ярлык роли пользователя.

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

Этот код протестирован и полностью работоспособен.

Ссылка: WooCommerce - включение нуля ставка налогового класса для определенных ролей пользователей

person LoicTheAztec    schedule 11.10.2016
comment
Что, если я хочу отключить для незарегистрированного пользователя? - person Bilal Hussain; 15.03.2017
comment
@LoicTheAztec нулевая ставка работает нормально для простого продукта, но не работает для продукта Variation. Пожалуйста помоги - person Simanto; 18.05.2017
comment
У меня это не сработало в WooCommerce версии 5.2.2. Было бы замечательно, если бы кто-нибудь мог обновить это и заставить его работать для Woo 5+. - person Matt Wilson; 06.05.2021
comment
@MattWilson Извините, но составные хуки woocommerce_product_get_tax_class и woocommerce_product_variation_get_tax_class по-прежнему отлично работают в последней версии WooCommerce, но для этого требуется вводить цены на продукты без налогов, чтобы получить видимую разницу при программном изменении налогового класса. - person LoicTheAztec; 06.05.2021