2015-09-23 2 views
0

Я просто хочу отобразить сообщение, когда пользователь имеет пользовательскую роль .. Он работает с собственными ролями пользователя, но не с обычными. Вот мой код:Wordpress: проверка пользовательской роли в frontend

<?php 
$user_ID = get_current_user_ID(); 
$user = new WP_User($user_ID); 
$current_user = $user->roles[0]; 

if($current_user == 'client'){ 
    echo 'hello client'; 
} else { 
    // do nothing 
} 
?> 

Любая помощь приветствуется, спасибо!

ответ

1

Вы можете попробовать это:

if (is_user_logged_in()) 
{ 
    global $current_user; 
    $user_role = $current_user->roles[0]; 

    if($user_role == 'client') 
    { 
    // do something 
    } 
} 

is_user_logged_in() используется для проверки того, зарегистрирован пользователь или нет

+0

Оказывается, я допустил ошибку в создании роли пользовательских пользователей. Тем не менее, ваш путь намного лучше/чище, спасибо! – Luc

0

Приведенные выше примеры являются проблематичными, если пользователь имеет более одного набора ролей, как код проверяет только первую роль, которую пользователь установил.

В идеале, вы должны проверять, если какой-либо из ролей Пользователя соответствует пользовательской роли:

if (is_user_logged_in()) { 
    global $current_user; 

    if(in_array('YOUR_CUSTOM_ROLE', $current_user->roles)) { 
     echo 'User has Custom Role'; 
    } else { 
     echo 'User does not have Custom Role'; 
    } 
} 
Смежные вопросы