Я получил этот код, который будет облагать налогом бесплатно в роли пользователя независимо от того, что они заказывают, и это нормально.
Но теперь мне нужна другая роль пользователя, которая будет применять налоговые льготы для определенных продуктов id , и я не уверен, как это сделать.
Код im, использующий прямо сейчас для освобождения от налогов для всех продуктов для конкретной роли пользователя:
// 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.
Вот код, который будет применять этот налоговый класс «Zero Rate» для некоторых определенных продуктов и некоторых определенных пользовательских ролей:
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-файлах.
CASE 1 Через код
Вы можете использовать функцию 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 ));
CASE 2: через плагин