2016-11-29 3 views
3

Ich habe diesen Code, der für eine Benutzerrolle steuerfrei gilt, unabhängig davon, was sie bestellen, was in Ordnung ist.Steuerklasse "Nullsatz" pro Benutzerrolle für spezifische Produkt-IDs

Aber jetzt brauche ich eine andere Benutzerrolle, die Steuerfrei auf spezifische Produkte ID anwenden wird, und ich bin nicht sicher, wie man das acaplish.

Der Code im Augenblick für steuerfrei auf alle Produkte für bestimmte Benutzerrolle verwendet, ist:

// 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

Sie brauchen Rolle ??? –

+0

ja, ich brauche nur eine (oder zwei) Benutzerrolle, um in der Lage zu sein, kostenlose Steuer auf spezifische Produkt-ID –

Antwort

3

Hier ist der Code, der diese "Null-Rate" Steuerklasse für einige definierte Produkte und einige definierten Benutzerrollen gelten:

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; 

} 

Dieser Code ist getestet und funktioniert.

Code geht in jede PHP-Datei Ihres aktiven untergeordneten Themas (oder Themas) oder auch in jedes Plugin php-Dateien.

+0

Sie sind toller Mann, ich habe es noch nicht getestet, aber ich werde so schnell wie möglich und lassen Sie es wissen! –

+0

Ja, ich arbeite an ein paar verschiedenen Projekten, und ich habe ein paar Zweifel über viele Dinge, deshalb, aber ich werde die Ergebnisse bald posten, nochmals vielen Dank –

0

CASE 1 Via Code

Sie add role Funktion wie

<?php add_role($role, $display_name, $capabilities); ?> 
verwenden können

Beispiel

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: Via Plugin

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

+0

Hallo, Vielen Dank für die Info, aber Sie scheinen meine Frage nicht zu verstehen. Ich weiß, wie man Rollen erstellt, aber was ich brauche, ist eine bestimmte Benutzerrolle, die für eine bestimmte Produkt-ID steuerfrei ist. –

+0

okay, dann haben Sie bereits Code für diese –

+0

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

Verwandte Themen