Flector

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

Если по каким-то причинам вы не хотите, чтобы пользователи сайта могли входить в админку (любые ссылки в wp-admin), то сделать это очень просто. Достаточно лишь добавить в файл functions.php вашей темы следующий код:

//запрет доступа к админке start
function wph_noadmin() {
    if (is_admin() && !current_user_can('administrator')) {
        wp_redirect(home_url());
        exit;
    } }
add_action('init', 'wph_noadmin'); 
//запрет доступа к админке end

И это все. В админку вашего сайта зайти смогут только администраторы, а все остальные пользователи при попытке открыть любую ссылку в админке будут перенаправлены на главную страницу вашего сайта. Не забудьте только убрать верхнюю панель WordPress для пользователей, так как в ней содержатся ссылки на админку (как минимум ссылка на профиль пользователя и ссылка на консоль).


Комментарии (24 комментария)
  1. Dimushka:

    Спасибо, чувак, очень выручил

  2. Андрей:

    Отлично - выручил . Это лучшее решение что я нашел.

  3. Radu:

    Помогите пожалуйста, у меня такая проблема: в админку сайта (site.com/wp-admin ) могут заходить только администраторы, остальные пользователи при входе перенаправляют на главную. Как дать доступ к админке ( например для редакторов или авторов ) ,

  4. Спасибо за совет. Очень помог!

  5. Оксана:

    Супер! НО у меня пользователь перестает видеть гугл карты, как только я применяю данный код, как это связано?

    • Flector:

      это никак не может быть связано, даже теоретически.

      • Алекс:

        Очень даже может быть связано, поверь мне

        • Flector:

          не может, с чего вдруг верить тебе?

  6. Aleke:

    Привет всем,

    Подскажите пожалуйста, есть на сайте кастомная форма для регистрации и логина и есть кабинет (dashboard) для двух ролей пользователей,
    Так вот с гостями все нормально, а есть вторая роль пользователей и если под ней они заходят в кастомный кабинет - все ок, но они так же могут зайти в админ панель (wp-admin) и там очень много всего им не нужного отображается =)
    Как исправить?
    Доступ в админку закрывал, но тогда никто зайти не может вообще, кроме админа.

    • Aleke:

      а все, решил вопрос плагином Remove Dashboard Access.
      перекрывает всем доступ в админку кроме админа

  7. Павел:

    Отлично! Сделал. Вышел из админпанели. Проверил, как посетитель.Всё работает.Теперь не могу зайти в админку:) Я админ.

    • Flector:

      вашсайт\wp-login.php

      • Павел:

        Во как:) Сам я что-о не допёр... Но возник вопрос - теперь и wp-login.php также прятать? Ведь,это точно такое же окно, как и wp-admin. Объясните, пожалуйста. Очень мне ваш вариант понравился...

        • Flector:

          этот код прячет не вход, а саму админку. если шифровать страницу входа - то множество плагинов для этого есть. а смысл именно этого кода чтобы пользователи не шастали в админке.

  8. Павел:

    А вот если у меня на сайте нет регистрации посетителей. Мне есть о чём беспокоиться? Ну, кроме ВХОДА в wp-admin?

    • Flector:

      закройте доступ в админку и к wp-login.php по ip, если у вас статический ip. это защитит от ботов, перебирающих пароли.

      • Павел:

        Так у меня ж нет регистрации, от кого закрывать админ-ПАНЕЛЬ?

        • Flector:

          так сказал же - от ботов.
          вы логи сервера гляньте, там каждый день сотни и тысячи попыток подобрать пароль. такое с каждым сайтом на wordpress происходит.

  9. Павел:

    Ясно. Спасибо. Что лучше сделать //полное скрытие панели от всех кроме админов start или Как запретить пользователям входить в админку? Оба варианта от вас.

    • Flector:

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

      • Павел:

        Понемногу начинаю разбираться. Очень вам благодарен. хороший сайт. У меня такой случился коллапс - поставил //запрет доступа к админке start. Работает, открывается главная страница сайта. Чудесно. НО... перестали ставиться Лайки. А мне бы хотелось оставить эту фишку...

  10. Если вдруг кто случайно так же как и я натолкнулся на этот пост, то имейте ввиду при добавлении этой конструкции перестанут работать ajax запросы к admin-ajax.php для всех гостей, а это может сломать работу некоторых плагинов! (Например счетчик просмотров страницы, который работает через ajax если сайт обмазан кешем)

    Чтобы этого не случилось нужно сделать проверку, что запрос не является ajax.

    1
    2
    3
    4
    5
    6
    
    function wph_noadmin() {
    	if ( is_admin() && !current_user_can('administrator') && !wp_doing_ajax() ) {
    		wp_redirect(home_url());
    		exit;
    	} }
    add_action('init', 'wph_noadmin');
  11. Я бы порекомендовал не сильно это использовать, так как начинаются проблемы с доступом к файлу admin-ajax.php у авторизированных пользователей.
    Проверенный код от Миши Рудрастых:
    function true_wp_admin_block() {
    if (!current_user_can('administrator')) { // если не администратор
    header('HTTP/1.0 404 Not Found');
    exit();
    }
    }
    add_action('admin_menu', 'true_wp_admin_block');

    ссылка на материал: https://misha.agency/wordpress/disable-wp-admin.html

Написать комментарий

Для вставки кода воспользуйтесь кнопкой "Код". Используйте предпросмотр!