#wordpress #woocommerce #user-roles
#wordpress #woocommerce #роли пользователей
Вопрос:
Я хотел бы переключить валюту моего магазина wordpress / woocommerce на USD, когда имя пользователя, вошедшего в систему, содержит массив «usd».
Я пытался использовать этот код, но он не сработал. Не могли бы вы мне помочь?
Спасибо
function set_role_currency($currency){
if( is_user_logged_in() ) {
$user = wp_get_current_user();
$roles = ( array ) $user->roles;}
if (in_array('usd', $roles)) { return 'USD'; }
return $currency;
}
add_filter('woocommerce_currency', 'set_role_currency', 10, 2);
Комментарии:
1. «имя пользователя содержит массив «usd»» ? Означает ли это, что ваше имя пользователя содержит слово «usd», например: «username_usd» или вы устанавливаете какие-либо роли для пользователя как «usd»?
2. роль пользователя содержит «usd», как дважды проверить, действительно ли роль, с которой сравнивается wordpress, содержит строку «usd»?
Ответ №1:
Возможно, все, что вам нужно, это просто исправить это
add_filter('woocommerce_currency', 'set_role_currency', 10, 2);
Поскольку вы передаете только 1 параметр и, возможно, устанавливаете приоритет позже:
add_filter('woocommerce_currency', 'set_role_currency', 100, 1);
Комментарии:
1. Спасибо за быстрый ответ. Я думаю, что проблема заключается в поиске строки «usd» в массиве пользовательских ролей. Я создал дополнительную роль пользователя с помощью плагина WooCommerce Wholesale Pro и назвал ее «wholesale_usd». Я думаю, что отображаемое имя — «wholesale_usd», но реальное имя за ним другое. Как я могу проверить имя роли пользователя?
2. @Ahmed вы всегда можете использовать встроенные регистраторы WC. $logger = новый WC_Logger(); $logger_name = «Имя моего регистратора»; $logger-> добавить($logger_name,print_r($user-> роли, true));