Как создать кастомную страницу входа в WordPress и решить проблемы с безопасностью

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

Почему нужна кастомная страница входа в WordPress

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

  • Уникальный дизайн, соответствующий стилю сайта.
  • Улучшение UX: добавить логотип, инструкции, CAPTCHA.
  • Скрыть стандартный URL /wp-login.php для повышения безопасности.
  • Добавить дополнительные проверки и защиту от брутфорса.

Рассмотрим несколько способов реализации.

Создание кастомной страницы входа вручную (код)

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

1. Создание шаблона страницы входа

Создайте файл page-login.php в теме:

<?php
/*
Template Name: Custom Login
*/

get_header();

// Проверяем отправку формы
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $creds = [];
    $creds['user_login'] = $_POST['log'] ?? '';
    $creds['user_password'] = $_POST['pwd'] ?? '';
    $creds['remember'] = isset($_POST['rememberme']);

    $user = wp_signon($creds, false);

    if (is_wp_error($user)) {
        echo '<p style="color:red;">' . esc_html($user->get_error_message()) . '</p>';
    } else {
        wp_redirect(home_url());
        exit;
    }
}
?>

<form method="post" action="">
    <p><label for="log">Логин</label><br><input type="text" name="log" id="log" required /></p>
    <p><label for="pwd">Пароль</label><br><input type="password" name="pwd" id="pwd" required /></p>
    <p><input type="checkbox" name="rememberme" id="rememberme" /><label for="rememberme">Запомнить меня</label></p>
    <p><input type="submit" value="Войти" /></p>
</form>

<?php get_footer(); ?>

Этот шаблон можно применить к странице в админке. Форма обрабатывает вход с помощью функции wp_signon().

2. Перенаправление с /wp-login.php на кастомную страницу

Чтобы скрыть стандартный URL, добавим редирект:

add_action('login_init', function() {
    $login_page = home_url('/login/'); // URL вашей страницы с шаблоном
    $current_url = (isset($_SERVER['REQUEST_URI'])) ? $_SERVER['REQUEST_URI'] : '';
    if (strpos($current_url, 'wp-login.php') !== false && !isset($_POST['wp-submit'])) {
        wp_redirect($login_page);
        exit;
    }
});

Добавьте этот код в functions.php вашей темы или в отдельный плагин.

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

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

  • WPS Hide Login — меняет URL страницы входа. Очень лёгкий и эффективный инструмент. Подробнее на WPSHOP
  • Custom Login Page Customizer — позволяет менять дизайн страницы через «Внешний вид» → «Настроить».
  • LoginPress — мощный конструктор страниц входа с визуальным редактором и поддержкой Google reCAPTCHA.

Комбинируйте плагин для смены URL (например, WPS Hide Login) и плагин для визуального оформления, чтобы получить идеальный вариант.

Повышение безопасности страницы входа

Кастомная страница входа — не только про дизайн, но и про защиту.

1. Ограничение количества попыток входа

Для борьбы с подбором пароля используйте плагин Limit Login Attempts Reloaded или пишите свой код с использованием wp_authenticate_user и ведением счётчика.

2. Защита от CSRF

Добавьте nonce в форму входа и проверяйте его на стороне сервера:

// Добавить nonce в форму
<input type="hidden" name="custom_login_nonce" value="<?php echo wp_create_nonce('custom-login-nonce'); ?>" />

// Проверка перед авторизацией
if (!isset($_POST['custom_login_nonce']) || !wp_verify_nonce($_POST['custom_login_nonce'], 'custom-login-nonce')) {
    wp_die('Ошибка безопасности. Попробуйте снова.');
}

3. Двухфакторная аутентификация

Используйте плагины, например, Two Factor или Google Authenticator для добавления второго шага верификации.

Пример кастомной функции входа с проверкой nonce и редиректом — 2wp.ru

function 2wp_custom_login_process() {
    if ($_SERVER['REQUEST_METHOD'] === 'POST') {
        if (!isset($_POST['custom_login_nonce']) || !wp_verify_nonce($_POST['custom_login_nonce'], 'custom-login-nonce')) {
            wp_die('Ошибка безопасности.');
        }
        $creds = [];
        $creds['user_login'] = sanitize_text_field($_POST['log'] ?? '');
        $creds['user_password'] = $_POST['pwd'] ?? '';
        $creds['remember'] = isset($_POST['rememberme']);

        $user = wp_signon($creds, false);

        if (is_wp_error($user)) {
            echo '<p style="color:red;">' . esc_html($user->get_error_message()) . '</p>';
        } else {
            wp_redirect(home_url('/dashboard/'));
            exit;
        }
    }
}

Вызовите эту функцию в шаблоне страницы входа перед формой.

Выводы и рекомендации по кастомизации входа

Создание собственной страницы входа — отличный способ улучшить UX и защитить сайт от атак. Рекомендуется комбинировать несколько подходов:

  • Создавать кастомный шаблон с проверками nonce и обработкой ошибок.
  • Использовать плагин WPS Hide Login для смены URL страницы входа Подробнее.
  • Добавлять защиту от брутфорса и двухфакторную аутентификацию.
  • Стилизовать форму через CSS или использовать специализированные плагины.

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

Как использовать WordPress Transients для оптимизации производительности сайта
04.12.2025
Как удалить кэш в WordPress: практическое руководство
21.11.2025
Автоматическое создание миниатюр (thumbnail) для картинок в WordPress
01.12.2025
Как запретить доступ к определённому контенту по ролям в WordPress
19.01.2026
Как добавить собственные виджеты в WordPress
24.11.2025