Код: запретить пользователям доступ в админку

Очень часто меня спрашивают, как запретить обычным пользователям, не админам, доступ в админку WordPress. Делается это очень просто, причем для этого есть даже специальные плагины. Но зачем устанавливать плагин, когда можно самостоятельно прописать 5 строк кода?

Итак, в functions.php вашей темы или в любой php файл внутри /wp-content/mu-plugins/ вставляете следующее:

add_action('admin_init','users_redirect');
function users_redirect(){
if(!is_site_admin()){
wp_redirect(site_url());
die();
}
}

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

комментария 16

  1. Альберт:

    Скажите пожалуйста! А как к примеру можно запретить пользователю с ролью автор к админке кроме странички post_new.php ?

  2. Александр:

    Вставил, но теперь и сам зайти не могу, что не так ?

  3. Александр:

    вроде да, пользователь @admin как по умолчанию было.

    • Да, мой бок. Я исправил код – убрал проверку is_network_admin() – она работает только, если активирована сеть :)
      Еще раз скопируйте и вставьте код.

  4. Berzhan:

    Это закрытия доступа к админке сети и сайта, да? А пользователи смогут попасть в админку своих блогов?

    • Обычные пользователи – не админы – не смогут. Это site_admin, то есть я боюсь, что обычные пользователи в свои собственные блоги тоже не смогут попасть. Чтобы исправить – надо просто добавить условие, что текущий авторизованный пользователь является админом блога, на который заходит.
      Проверять с помощью current_user_can(‘manage_options’);
      Условия внутри if можно заменить на:

      if(!current_user_can('manage_options')){
  5. Berzhan:

    Извините что не по теме, но есть ещё один вопрос:
    Как исправить title страниц в BuddyPress? Чтобы всё было на русском, например, вместо “User Groups: Каталог | SITENAME” было “Группы (или сообщества): Все | SITENAME”. Заранее спасибо.

  6. klimat:

    Здравствуйте, вставил Ваш код в word press 3.3.1 и не могу под админом зайти в админку, в чем может быть проблема?

  7. Короче я сделал как написано внёс код а потом вообще админка пропала нету нету доступа(( решил через FTP зайти удалить текст но не помогло так же при запроса адреса выходит ошибка Fatal error: Call to undefined function is_site_admin() in /home/chenakin/svetcheb/wp-content/themes/twentyten/functions.php on line 518

  8. Функция is_site_admin() была в WordPress MU:
    http://codex.wordpress.org/WPMU_Functions/is_site_admin

    В WordPress 3.0 и выше она объявлена устаревшей (и работает только в режиме Multisite). Вместо неё рекомендуется использовать функцию is_super_admin():
    http://codex.wordpress.org/Function_Reference/is_super_admin

  9. Вам поможет плагин Adminimize! С ним возможно отредактировать все для определенного пользователя. Отлично работает с BP.

  10. Здравствуйте! я тут поставил ваш код теперь в админку вообще не смогу попасть выдает ошибку

    Страница недоступна

    Сайт
    ******* пока не может обработать этот запрос.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *