Если текущий пользователь является администратором или редактором

Как я могу проверить, является ли текущий зарегистрированный пользователь администратором или редактором?

Я знаю, как делать каждый особенно:

<? php if (current_user_can ('editor')) {?>
    <! - материал здесь для редакторов ->
<? php}?>
<? php if (current_user_can ('administrator')) {?>
    <! - здесь для админов ->
<? php}?>

Но как мне работать вместе? То есть. пользователь является администратором или редактором?

65 голосов | спросил andy 30 Jpm1000000pmThu, 30 Jan 2014 18:08:32 +040014 2014, 18:08:32

2 ответа


134

Первый ответ, а не связанный с 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}?>

Посмотрите здесь для получения дополнительной информации о возможностях.

ответил gmazzap 30 Jpm1000000pmThu, 30 Jan 2014 18:16:14 +040014 2014, 18:16:14
0
<? 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;
? >
ответил seowmx 29 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 29 Sep 2016 20:26:21 +0300 2016, 20:26:21

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132