2016-05-03 22 views
1

Ich habe ein benutzerdefiniertes WooCommerce-Checkout-Feld mit Woothemes Checkout-Feld-Editor mit der Bezeichnung "po_number" erstellt. Ich möchte, dass das Feld Bestellnummer-Kasse nur für die Benutzerrolle "Verteiler" angezeigt wird.WooCommerce Checkout-Felder können nicht überschrieben werden

Bisher konnte ich die Checkout-Felder nicht überschreiben. Ich benutze Wordpress 4.5.1/Woocommerce 2.5.5. Hier ist der Code, den ich in meinem Kind Thema platziert habe. Ich habe auch getestet, um sicherzustellen, dass es kein Thema Konflikt ist.

Jede Hilfe wird sehr geschätzt.

Dies ist mein Code:

function custom_override_checkout_fields($fields) { 

    if (! current_user_can('distributor') && isset($fields['billing']['po_number'])) { 
     unset($fields['billing']['po_number']); 

    } 
    return $fields; 
} 
add_filter('woocommerce_checkout_fields' , 'custom_override_checkout_fields'); 

Antwort

0

Die current_user_can() Funktion bezieht sich auf die Fähigkeiten der Benutzerrollen, aber nicht die Benutzerrollen selbst zu erkennen. Aus diesem Grund funktioniert nicht in Ihrem Code.

Sie benötigen eine bedingte Funktion für diesen Zweck (Benutzerrollen) setzen:

function is_user_role($role, $user_id = null) { 
    if (is_numeric($user_id)) { 
     $user = get_userdata($user_id); 
    } else { 
     $user = wp_get_current_user(); 
    } 
    if (empty($user)) { 
     return false; 
    } 
    if (in_array($role, (array) $user->roles) == 1) { 
     return true; 
    } else { 
     return false; 
    } 
} 

Dann in Ihrem Code Sie diese Funktion verwenden können:

function custom_override_checkout_fields($fields) { 
    if (!is_user_role('distributor') && isset($fields['billing']['po_number'])) { 
     unset($fields['billing']['po_number']); 
    } 
     return $fields; 
} 
add_filter('woocommerce_checkout_fields', 'custom_override_checkout_fields'); 

Dies sollte in Ihrem Code arbeiten.

+0

Das hat den Trick gemacht. Danke für Ihre Hilfe! – Kevin

Verwandte Themen