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

В стандартной установке WordPress страницы регистрации доступны по адресу wp-login.php?action=register. Это может создавать проблемы с безопасностью и удобством, особенно если вы хотите ограничить регистрацию или изменить URL для улучшения пользовательского опыта и защиты от спама. В этой статье рассмотрим, как удалить или изменить URL страницы регистрации без использования плагинов, а также варианты решения часто встречающихся задач.

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

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

Изменение или отключение стандартной регистрации помогает:

  • Уменьшить количество спам-аккаунтов;
  • Сделать сайт более безопасным;
  • Создать уникальный пользовательский опыт с кастомным URL;
  • Интегрировать регистрацию в собственный дизайн.

Как отключить стандартную страницу регистрации в WordPress

Если вам нужно полностью запретить регистрацию через стандартный URL, можно сделать редирект или вывести ошибку при обращении к wp-login.php?action=register. Для этого добавим следующий код в файл functions.php вашей темы или в отдельный плагин:

function wptemplates_disable_wp_registration() {
    if (isset($_GET['action']) && $_GET['action'] === 'register') {
        wp_redirect(home_url());
        exit;
    }
}
add_action('login_init', 'wptemplates_disable_wp_registration');

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

Как создать кастомный URL страницы регистрации

Чтобы создать собственный адрес регистрации, например /custom-register, и вывести там форму регистрации, можно использовать шаблон страницы и перехватывать запросы через template_redirect. Вот пошаговое решение:

1. Создаем страницу в админке WordPress

Создайте новую страницу с ярлыком (slug) custom-register. В этой статье мы будем использовать именно этот slug.

2. Создаем шаблон страницы регистрации

Добавьте в папку темы файл page-custom-register.php со следующим кодом:

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

if ( is_user_logged_in() ) {
    wp_redirect(home_url());
    exit;
}

if ('POST' == $_SERVER['REQUEST_METHOD'] && !empty($_POST['wptemplates_register_nonce']) && wp_verify_nonce($_POST['wptemplates_register_nonce'], 'wptemplates_register_action')) {
    $errors = wptemplates_handle_registration();
} else {
    $errors = new WP_Error();
}

get_header();
?>

<h1>Регистрация на сайте</h1>

<?php if ($errors->get_error_codes()) : ?>
    <ul class="errors">
    <?php foreach ($errors->get_error_messages() as $error) : ?>
        <li><?php echo esc_html($error); ?></li>
    <?php endforeach; ?>
    </ul>
<?php endif; ?>

<form method="post" action="">
    <p><label for="username">Имя пользователя</label><br>
    <input type="text" name="username" id="username" required /></p>

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

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

    <p><input type="hidden" name="wptemplates_register_nonce" value="<?php echo wp_create_nonce('wptemplates_register_action'); ?>" /></p>

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

<?php get_footer(); ?>

3. Обрабатываем регистрацию

Добавьте в functions.php функцию для обработки регистрации:

function wptemplates_handle_registration() {
    $errors = new WP_Error();
    
    $username = sanitize_user($_POST['username']);
    $email = sanitize_email($_POST['email']);
    $password = $_POST['password'];

    if (empty($username) || empty($email) || empty($password)) {
        $errors->add('field', 'Все поля обязательны для заполнения');
        return $errors;
    }

    if (!validate_username($username)) {
        $errors->add('username_invalid', 'Неверный формат имени пользователя');
    }

    if (username_exists($username)) {
        $errors->add('username_exists', 'Такой пользователь уже существует');
    }

    if (!is_email($email)) {
        $errors->add('email_invalid', 'Неверный email');
    }

    if (email_exists($email)) {
        $errors->add('email_exists', 'Email уже зарегистрирован');
    }

    if (strlen($password) < 6) {
        $errors->add('password_short', 'Пароль должен быть не менее 6 символов');
    }

    if (!empty($errors->errors)) {
        return $errors;
    }

    $user_id = wp_create_user($username, $password, $email);
    if (is_wp_error($user_id)) {
        $errors->add('register_failed', 'Ошибка при создании пользователя');
        return $errors;
    }

    // Можно автоматически залогинить пользователя после регистрации
    wp_set_current_user($user_id);
    wp_set_auth_cookie($user_id);
    wp_redirect(home_url());
    exit;

    return $errors;
}

Дополнительные советы по безопасности

Даже при использовании кастомных форм регистрации стоит предусмотреть защиту от спама и ботов. Рекомендуется:

  • Добавить CAPTCHA, например Google reCAPTCHA;
  • Использовать nonce для защиты форм (как в примере выше);
  • Ограничивать количество попыток регистрации;
  • Проверять email на принадлежность к разрешенным доменам, если нужно;
  • Следить за обновлениями безопасности WordPress.

Для добавления CAPTCHA можно использовать плагин Clearfy Pro, который поддерживает интеграцию с reCAPTCHA и улучшает безопасность сайта.

Как перенаправлять старый URL регистрации на новый

Если вы изменили URL, полезно настроить редирект со стандартного адреса, чтобы пользователи и боты не попадали на страницу регистрации по старому адресу:

function wptemplates_redirect_old_registration_url() {
    if (isset($_GET['action']) && $_GET['action'] === 'register') {
        wp_redirect(site_url('/custom-register/'));
        exit;
    }
}
add_action('login_init', 'wptemplates_redirect_old_registration_url');

Этот код перенаправит все запросы на wp-login.php?action=register на ваш кастомный URL /custom-register/.

Вывод

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

Для удобства управления регистрацией и безопасности рассмотрите возможность использования профессиональных плагинов с поддержкой кастомизации, например Expert Review для проверки пользователей или Clearfy Pro для оптимизации безопасности.

Удаление и блокировка плагинов WordPress, если стандартные методы не работают
16.01.2026
Создаем свой шаблон для WordPress с нуля
04.11.2025
Как добавить автоматическое удаление старых черновых шаблонов в WordPress
02.04.2026
WooCommerce: как изменить стоимость товаров в корзине без пересчета
21.05.2026
Как создать динамический шаблон для WooCommerce с кастомным выводом товаров
17.02.2026