2016-05-03 6 views
1

Я создал настраиваемое поле проверки WooCommerce с редактором полей Woothemes Checkout с надписью «po_number». Я хотел бы, чтобы поле проверки номера заказа отображалось только для роли пользователя «дистрибьютор».Невозможно переопределить поля для проверки WooCommerce

До сих пор я не увенчался успехом в переопределении полей проверки. Я использую Wordpress 4.5.1/Woocommerce 2.5.5. Вот код, который я разместил в своей дочерней теме functions.php. Я также тестировал, чтобы убедиться, что это не конфликт темы.

Любая помощь очень ценится.

Это мой код:

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'); 

ответ

0

current_user_can() функция связана с возможностями ролей пользователей, но не для обнаружения самих ролей пользователей. По этой причине в вашем коде не работает.

Вам необходимо установить условную функцию для этой цели (роли пользователей):

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; 
    } 
} 

Тогда в вашем коде вы можете использовать эту функцию:

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'); 

Это должно работать в вашем коде.

+0

Это сделало трюк. Спасибо за вашу помощь! – Kevin

 Смежные вопросы

  • Нет связанных вопросов^_^