Как удалить или скрыть авторизацию для определённых пользователей в WordPress

|

В WordPress иногда возникает задача ограничить доступ к форме входа или полностью убрать возможность авторизации для определённых групп пользователей. Это может понадобиться для сайтов с закрытым доступом, приватными разделами или когда есть необходимость ограничить регистрацию и вход для определённых ролей или по IP-адресу. В этой статье мы рассмотрим несколько способов решения этой задачи, как с помощью кода, так и с использованием плагинов, а также разберём примеры, которые можно адаптировать под свои нужды.

Почему может понадобиться скрыть или удалить авторизацию для пользователей

Стандартная форма входа доступна по адресу wp-login.php и позволяет всем пользователям с аккаунтом войти в админку или личный кабинет. Но иногда требуется:

Без правильной настройки такие задачи могут быть решены только плагинами, которые часто перегружают сайт. Мы покажем, как можно реализовать это самостоятельно.

Как скрыть или запретить доступ к форме входа для определённых пользователей через functions.php

Основная идея — перехватить запросы к wp-login.php и сделать редирект или вывод сообщения об ошибке, если пользователь не соответствует условиям.

Пример кода: запрет входа для ролей, кроме администратора

function wpreboot_restrict_login_for_roles() {
    if (strpos($_SERVER['REQUEST_URI'], 'wp-login.php') !== false) {
        if (is_user_logged_in()) {
            $user = wp_get_current_user();
            if (!in_array('administrator', (array) $user->roles)) {
                wp_redirect(home_url());
                exit;
            }
        } else {
            if (isset($_POST['log'])) { // если пытаются войти
                $user = get_user_by('login', $_POST['log']);
                if ($user && !in_array('administrator', (array) $user->roles)) {
                    wp_die('Доступ запрещён. Авторизация разрешена только администраторам.');
                }
            }
        }
    }
}
add_action('init', 'wpreboot_restrict_login_for_roles');

Этот код проверяет при попытке открыть страницу входа или авторизоваться, принадлежит ли пользователь к роли администратора. Если нет — происходит редирект на главную или выводится сообщение об ошибке.

Добавление ограничения по IP-адресу

Чтобы ограничить доступ к форме входа по IP, можно добавить проверку IP в ту же функцию:

function wpreboot_restrict_login_by_ip() {
    $allowed_ips = ['123.45.67.89', '98.76.54.32']; // укажите разрешённые IP
    $user_ip = $_SERVER['REMOTE_ADDR'];

    if (strpos($_SERVER['REQUEST_URI'], 'wp-login.php') !== false && !in_array($user_ip, $allowed_ips)) {
        wp_die('Доступ к форме входа с вашего IP запрещён.');
    }
}
add_action('init', 'wpreboot_restrict_login_by_ip');

Можно комбинировать обе функции для более гибкой настройки.

Использование плагинов для управления доступом к авторизации

Если вы не хотите писать код, можно использовать специальные плагины, которые позволяют ограничивать вход и регистрацию.

Плагин Clearfy Pro

Clearfy Pro — универсальный инструмент для оптимизации и безопасности WordPress. В нём есть модуль, который позволяет скрывать страницу входа, менять URL авторизации и ограничивать доступ по ролям и IP. Это удобный вариант, если нужно быстро и без кодирования внедрить ограничения.

Плагин WPRemark

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

Как полностью убрать форму входа и заменить её на свой кастомный механизм

Иногда необходимо полностью убрать стандартный логин и использовать собственный шаблон или механизм авторизации. Это сложнее, но даёт полный контроль.

Создание перенаправления с wp-login.php и добавление кастомного шорткода входа

Для начала запретим доступ к стандартной странице входа и сделаем редирект на страницу с вашим собственным шорткодом формы:

function wpreboot_disable_default_login() {
    $login_page = home_url('/custom-login/'); // ваша страница с формой
    $request = $_SERVER['REQUEST_URI'];
    if (strpos($request, 'wp-login.php') !== false && $_SERVER['REQUEST_METHOD'] === 'GET') {
        wp_redirect($login_page);
        exit;
    }
}
add_action('init', 'wpreboot_disable_default_login');

Далее создайте страницу /custom-login/ и добавьте туда шорткод с формой входа:

function wpreboot_login_form_shortcode() {
    if (is_user_logged_in()) {
        return 'Вы уже авторизованы!';
    }

    $args = [
        'redirect' => home_url(),
        'form_id' => 'wpreboot-loginform',
        'label_username' => __('Имя пользователя'),
        'label_password' => __('Пароль'),
        'label_log_in' => __('Войти'),
        'remember' => true
    ];

    return wp_login_form($args);
}
add_shortcode('wpreboot_login_form', 'wpreboot_login_form_shortcode');

На странице вставьте шорткод [wpreboot_login_form]. Таким образом вы полностью контролируете, кто видит форму входа и где она размещена.

Полезные советы и рекомендации по безопасности

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

Заключение

Удаление или скрытие авторизации для определённых пользователей в WordPress — задача, решаемая как с помощью кода, так и с помощью специализированных плагинов. Мы рассмотрели несколько практических примеров, которые помогут вам гибко управлять входом на сайт, повысить безопасность и настроить доступ по своим требованиям. Используйте предложенные решения и адаптируйте их под свой проект — это позволит сделать ваш WordPress-сайт более защищённым и удобным для пользователей.

Как удалить и заблокировать неиспользуемые посты в WordPress: практическое руководство
12.12.2025
Как использовать Hooks в WordPress для начинающих: практические примеры и советы
15.11.2025
Как запретить регистрацию на WordPress: функции и плагины для контроля доступа
26.01.2026
Как использовать AJAX в WordPress для обновления контента без перезагрузки страницы
05.12.2025
Как отключить Gutenberg и оставить классический редактор в WordPress: практическое руководство
13.01.2026
×
WordPress
дай сайту суперсилу!

Скидки на топовые темы и плагины

Активировать суперсилу ⋙