2016-11-29 6 views
3

Я получил этот код, который будет применять налог бесплатно для роли пользователя независимо от того, что они заказывают, и это нормально.Налоговый класс «Нулевая ставка» за роль пользователя в определенных идентификаторах продукта

Но теперь мне нужна другая роль пользователя, которая будет облагать налогом на конкретные продукты id, и я не уверен, как это сделать.

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

// Apply a different tax rate based on the user role. 

function wc_diff_rate_for_user($tax_class, $product) { 
// Getting the current user 
$current_user = wp_get_current_user(); 
$current_user_data = get_userdata($current_user->ID); 

if (in_array('administrator', $current_user_data->roles) || in_array('userrolename', $current_user_data->roles)) 
    $tax_class = 'Zero Rate'; 

return $tax_class; 
} 
add_filter('woocommerce_product_tax_class', 'wc_diff_rate_for_user', 1, 2); 
// Fin Apply a different tax rate based on the user role. 
+0

Вам нужна роль ??? –

+0

да, мне нужна только одна (или две) роль пользователя, чтобы получить бесплатный налог на определенный идентификатор продукта –

ответ

3

Вот код, который будет применяться этот "нулевой ставке" налоговый класс для некоторых определенных продуктов и некоторых определенных пользовательских ролей:

add_filter('woocommerce_product_tax_class', 'wc_diff_rate_for_user', 1, 2); 
function wc_diff_rate_for_user($tax_class, $product) { 

    if (is_admin() && ! defined('DOING_AJAX')) 
     return; 

    // Define HERE your targeted products IDs 
    $products_ids_arr = array(12 ,15, 24); 

    // Define HERE your targeted user roles 
    $users_role_arr = array('administrator', 'userrolename'); 

    //Getting the current user data 
    $user_data = get_userdata(get_current_user_id()); 

    foreach ($users_role_arr as $user_role) 
     if (in_array($user_role, $user_data->roles) && in_array($cart_item->id, $products_ids_arr)) { 
      $tax_class = 'Zero Rate'; 
      break; 
     } 

    return $tax_class; 

} 

Этот код проверен и работает.

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

+0

Ты потрясающий человек, я еще не проверил его, но я сделаю как можно скорее и дам вам знать! –

+0

Да, я работаю над несколькими различными проектами, и у меня есть несколько сомнений по поводу множества вещей, поэтому я скоро опубликую результаты, спасибо много раз. –

0

СЛУЧАЯ 1 Via кода

Вы можете использовать add role функция как

<?php add_role($role, $display_name, $capabilities); ?> 

Пример

add_role('basic_contributor', 'Basic Contributor', array(
    'read' => true, // True allows that capability 
    'edit_posts' => true, 
    'delete_posts' => false, // Use false to explicitly deny 
)); 

СЛУЧАЙ 2: Via Plugin

https://wordpress.org/plugins/user-role-editor/

+0

Привет, спасибо за информацию, но вы, похоже, не понимаете мой вопрос. Я знаю, как создавать роли, но мне нужна определенная роль пользователя, которая не облагается налогом на определенный идентификатор продукта. –

+0

хорошо, то у вас уже есть код для этого –

+0

https://wordpress.org/support/topic/tax-exempt-checkbox-user-still-charged-tax/ –