Если текущий пользователь является администратором или редактором
Как я могу проверить, является ли текущий зарегистрированный пользователь администратором или редактором?
Я знаю, как делать каждый особенно:
<? php if (current_user_can ('editor')) {?>
<! - материал здесь для редакторов ->
<? php}?>
<? php if (current_user_can ('administrator')) {?>
<! - здесь для админов ->
<? php}?>
Но как мне работать вместе? То есть. пользователь является администратором или редактором?
2 ответа
Первый ответ, а не связанный с WordPress, потому что это всего лишь PHP, используйте логический оператор «OR»:
<? php if (current_user_can ('editor') || current_user_can ('administrator')) {?>
//здесь для администраторов или редакторов
<? php}?>
Если вы хотите проверить более двух ролей, вы можете проверить, находятся ли роли текущего пользователя внутри массива ролей, например:
$ user = wp_get_current_user ();
$ allowed_roles = array ('editor', 'administrator', 'author');
<? php if (array_intersect ($ allowed_roles, $ user-> role)) {?>
//здесь для разрешенных ролей
<? php}?>
Однако current_user_can
может использоваться не только с именем роли пользователя, но также с возможностей.
Итак, как только редакторы и администраторы могут редактировать страницы, ваша жизнь может быть проще проверять эти возможности:
<? php if (current_user_can ('edit_others_pages')) {?>
//здесь для пользовательских ролей, которые могут редактировать страницы: редакторы и администраторы
<? php}?>
Посмотрите здесь для получения дополнительной информации о возможностях.
<? php if (current_user_can ('editor')):
эхо «добро пожаловать»;
elseif (current_user_can ('member')):
эхо «добро пожаловать»;
Остальное:
wp_die ("<h2> Для просмотра этой страницы вы должны сначала <a href =" ". wp_login_url (get_permalink ())." title = 'Login'> log in </a> </h2> );
ENDIF;
? >