Невозможно переопределить поля проверки WooCommerce

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

До сих пор мне не удалось переопределить поля оформления заказа. Я использую 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' );

1

Решение

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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]