Отключение доступа к wp-admin для подписчиков в WordPress

29 мар. 2013 г., 13:08:24
Просмотры: 14.5K
Голосов: 6

Я не хочу, чтобы пользователи с ролью subscriber могли входить через wp-admin.

Как вы предлагаете это реализовать?

0
Все ответы на вопрос 1
3
18

Вы можете удалить разрешение Read. Это предотвратит любой доступ к wp-admin.

function remove_read_wpse_93843(){  
    $role = get_role( 'subscriber' );
    $role->remove_cap( 'read' );    
}
add_action( 'admin_init', 'remove_read_wpse_93843' );

См. примечание в Codex о том, что этот код нужно выполнить только один раз.

Затем вам нужно скрыть панель администратора.

function hide_admin_wpse_93843() {
  if (current_user_can('subscriber')) {
    add_filter('show_admin_bar','__return_false');
  }
}
add_action('wp_head','hide_admin_wpse_93843');

И, вероятно, перенаправлять подписчиков при входе:

function redirect_sub_to_home_wpse_93843( $redirect_to, $request, $user ) {
    if ( isset($user->roles) && is_array( $user->roles ) ) {
      if ( in_array( 'subscriber', $user->roles ) ) {
          return home_url( );
      }   
    }
    return $redirect_to;
}
add_filter( 'login_redirect', 'redirect_sub_to_home_wpse_93843', 10, 3 );

Другие попытки доступа к wp-admin приведут к почти пустому экрану с сообщением "У вас недостаточно прав...".

Это базовое решение, но, думаю, оно поможет вам достичь цели.

29 мар. 2013 г. 16:11:12
Комментарии

Спасибо, именно то, что я искал. Сейчас попробую.

Prakash Raman Prakash Raman
29 мар. 2013 г. 23:22:14

Спасибо за ответ. Это именно то, что я искал.

João Paraná João Paraná
14 июл. 2014 г. 02:15:06

remove_cap() сейчас работает по-другому. Переработайте ваш код согласно одному из примеров на этой странице.

luukvhoudt luukvhoudt
22 мар. 2018 г. 10:44:12