Как изменить URL страницы регистрации WordPress без плагинов

Стандартный URL страницы регистрации WordPress – /wp-login.php?action=register – часто становится целью для ботов и злоумышленников. Чтобы повысить безопасность сайта и уменьшить количество спама, полезно изменить URL регистрации на кастомный адрес. В этой статье мы разберём, как сделать это без использования плагинов, используя только функции WordPress и немного PHP-кода.

Почему стоит менять URL регистрации WordPress

Стандартные URL WordPress (вход, регистрация, восстановление пароля) хорошо известны и широко используются ботами для автоматических атак. Изменение URL регистрации помогает:

  • Снизить количество автоматических регистраций спам-аккаунтов.
  • Повысить общую безопасность сайта.
  • Сделать URL более удобным и запоминающимся для пользователей.

Однако важно помнить, что изменение URL — это дополнительная мера безопасности, а не замена комплексной защиты.

Как изменить URL регистрации без плагинов: подробное решение

Главная идея — перехватить запросы к стандартному URL регистрации и перенаправить их на новый. Также нужно добавить обработчик для нового URL, чтобы форма регистрации отображалась корректно и данные обрабатывались.

Шаг 1. Добавление rewrite-правила

Добавим правило для ЧПУ (человеко-понятного URL), например, /register-new вместо стандартного /wp-login.php?action=register:

function wptemplates_add_rewrite_rules() {
    add_rewrite_rule('^register-new/?$', 'wp-login.php?action=register', 'top');
}
add_action('init', 'wptemplates_add_rewrite_rules');

После добавления правила необходимо перезаписать правила пермалинков — зайдите в админке WordPress в Настройки > Постоянные ссылки и просто нажмите «Сохранить изменения» без изменения настроек.

Шаг 2. Перенаправление со старого URL регистрации

Чтобы стандартный URL регистрации не был доступен, сделаем перенаправление на новый адрес:

function wptemplates_redirect_default_register_url() {
    if (isset($_GET['action']) && $_GET['action'] === 'register' && strpos($_SERVER['REQUEST_URI'], 'wp-login.php') !== false) {
        wp_redirect(site_url('/register-new'));
        exit;
    }
}
add_action('login_init', 'wptemplates_redirect_default_register_url');

Этот код перехватывает попытки открыть стандартный URL регистрации и перенаправляет пользователя на новый.

Шаг 3. Проверка формы регистрации и обработка данных

Так как мы просто перенаправляем на стандартный файл wp-login.php?action=register, форма и логика регистрации будут работать без изменений. Но если хотите полностью кастомизировать форму регистрации, можно создать отдельный шаблон или страницу с формой и обрабатывать регистрацию через хук register_post или собственный обработчик.

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

Изменение URL регистрации — хорошая мера, но не панацея. Чтобы усилить защиту, рекомендуем:

  • Использовать плагины, такие как Clearfy Pro, которые помогут скрыть стандартные страницы WordPress.
  • Добавить капчу на форму регистрации для снижения спама.
  • Ограничить количество попыток регистрации с одного IP-адреса.
  • Регулярно обновлять WordPress и плагины для закрытия уязвимостей.

Пример кастомной формы регистрации на отдельной странице

Если хотите сделать регистрацию полностью настраиваемой, можно создать страницу с формой и обрабатывать её через AJAX или POST-запрос. Пример простой формы регистрации:

<form method="post" action="">
    <label for="wptemplates_user_login">Логин</label>
    <input type="text" name="wptemplates_user_login" id="wptemplates_user_login" required>

    <label for="wptemplates_user_email">Email</label>
    <input type="email" name="wptemplates_user_email" id="wptemplates_user_email" required>

    <label for="wptemplates_user_pass">Пароль</label>
    <input type="password" name="wptemplates_user_pass" id="wptemplates_user_pass" required>

    <input type="submit" name="wptemplates_register_submit" value="Зарегистрироваться">
</form>

Обработка данных в functions.php:

function wptemplates_handle_custom_registration() {
    if (isset($_POST['wptemplates_register_submit'])) {
        $login = sanitize_user($_POST['wptemplates_user_login']);
        $email = sanitize_email($_POST['wptemplates_user_email']);
        $pass = $_POST['wptemplates_user_pass'];

        $errors = new WP_Error();

        if (empty($login) || empty($email) || empty($pass)) {
            $errors->add('field', 'Не все поля заполнены');
        }
        if (username_exists($login)) {
            $errors->add('user_exists', 'Пользователь с таким логином уже существует');
        }
        if (!is_email($email)) {
            $errors->add('email_invalid', 'Неверный формат email');
        }
        if (email_exists($email)) {
            $errors->add('email_exists', 'Пользователь с таким email уже существует');
        }

        if (empty($errors->errors)) {
            $user_id = wp_create_user($login, $pass, $email);
            if (!is_wp_error($user_id)) {
                wp_redirect(site_url('/wp-login.php?registered=true'));
                exit;
            } else {
                echo '<p>Ошибка регистрации: ' . $user_id->get_error_message() . '</p>';
            }
        } else {
            foreach ($errors->get_error_messages() as $error) {
                echo '<p>' . esc_html($error) . '</p>';
            }
        }
    }
}
add_action('init', 'wptemplates_handle_custom_registration');

Такой подход позволяет полностью контролировать процесс регистрации и URL.

Выводы и рекомендации

Изменение URL регистрации повышает безопасность сайта и снижает риски спама. Реализовать это можно без плагинов, используя rewrite-правила и редиректы. Если нужно больше контроля — стоит рассмотреть создание кастомной страницы с формой регистрации.

Для комплексной защиты рекомендуем комбинировать этот метод с плагинами безопасности и другими мерами. Например, Clearfy Pro отлично дополняет такие настройки.

Как создать функциональный REST API endpoint в WordPress для обмена данными
04.01.2026
WooCommerce: как изменить стоимость товаров в корзине без пересчета
21.05.2026
Как отключить редактор Gutenberg в WordPress 5.9: практические способы и примеры
08.03.2026
WooCommerce: как изменить стоимость товаров в корзине без пересчета
02.05.2026
WooCommerce: установка и настройка AJAX пагинации для каталога товаров
22.04.2026