Как запретить регистрацию пользователей в WordPress по URL

|

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

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

Регистрация по стандартному адресу может привести к нежелательным последствиям:

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

Как проверить, включена ли регистрация пользователей в WordPress

Для начала убедитесь, что регистрация разрешена в настройках сайта. Перейдите в Консоль → Настройки → Общие и проверьте, стоит ли галочка "Разрешить регистрацию пользователей". Если она снята, регистрация через стандартный URL уже недоступна.

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

Запрет регистрации по URL через functions.php

Самый простой способ — отловить попытки перехода на страницу регистрации и делать редирект или показывать 404 ошибку. Добавьте в файл functions.php вашей темы следующий код:

function wppremium_block_registration_url() {
    if ( isset($_GET['action']) && $_GET['action'] === 'register' ) {
        wp_redirect(home_url()); // Перенаправляем на главную
        exit;
    }
}
add_action('login_init', 'wppremium_block_registration_url');

Этот код проверяет, если запрос на страницу регистрации, то делает редирект на главную страницу сайта. Вы можете изменить home_url() на любой другой URL, например, на страницу с информацией о регистрации.

Альтернативный вариант — выводить ошибку 404

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

function wppremium_registration_404() {
    if ( isset($_GET['action']) && $_GET['action'] === 'register' ) {
        global $wp_query;
        $wp_query->set_404();
        status_header(404);
        nocache_headers();
        include(get_query_template('404'));
        exit;
    }
}
add_action('login_init', 'wppremium_registration_404');

Запрет регистрации с помощью плагинов

Если не хотите писать код, воспользуйтесь плагинами. Например:

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

Создание собственной формы регистрации и отключение стандартной

Если вы хотите оставить возможность регистрироваться, но не через стандартный URL, можно сделать собственную форму регистрации. Для этого создадим шорткод, который выведет форму, а регистрацию обработаем через AJAX.

Код создания шорткода с формой регистрации

function wppremium_custom_registration_form() {
    if ( is_user_logged_in() ) {
        return '<p>Вы уже авторизованы.</p>';
    }
    ob_start();
    ?>
    <form id="wppremium-registration-form" method="post">
        <p><label>Имя пользователя</label><br>
        <input type="text" name="username" required /></p>
        <p><label>Email</label><br>
        <input type="email" name="email" required /></p>
        <p><label>Пароль</label><br>
        <input type="password" name="password" required /></p>
        <p><input type="submit" value="Зарегистрироваться" /></p>
        <input type="hidden" name="action" value="wppremium_register_user" />
        <?php wp_nonce_field('wppremium_register_nonce', 'wppremium_register_nonce_field'); ?>
    </form>
    <div id="wppremium-registration-message"></div>
    <script>
    jQuery(document).ready(function($){
        $('#wppremium-registration-form').on('submit', function(e){
            e.preventDefault();
            var data = $(this).serialize();
            $.post(ajaxurl, data, function(response) {
                $('#wppremium-registration-message').html(response.data.message);
                if(response.success) {
                    $('#wppremium-registration-form')[0].reset();
                }
            });
        });
    });
    </script>
    <?php
    return ob_get_clean();
}
add_shortcode('wppremium_registration_form', 'wppremium_custom_registration_form');

Обработка регистрации через AJAX

function wppremium_ajax_register_user() {
    check_ajax_referer('wppremium_register_nonce', 'wppremium_register_nonce_field');

    $username = sanitize_user($_POST['username']);
    $email = sanitize_email($_POST['email']);
    $password = $_POST['password'];

    if (username_exists($username)) {
        wp_send_json_error(['message' => 'Имя пользователя уже занято']);
    }
    if (!is_email($email)) {
        wp_send_json_error(['message' => 'Некорректный email']);
    }
    if (email_exists($email)) {
        wp_send_json_error(['message' => 'Email уже зарегистрирован']);
    }
    $user_id = wp_create_user($username, $password, $email);
    if (is_wp_error($user_id)) {
        wp_send_json_error(['message' => 'Ошибка регистрации']);
    }
    wp_send_json_success(['message' => 'Регистрация прошла успешно']);
}
add_action('wp_ajax_wppremium_register_user', 'wppremium_ajax_register_user');
add_action('wp_ajax_nopriv_wppremium_register_user', 'wppremium_ajax_register_user');

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

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

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

Как добавить поддержку Gutenberg-блоков в своей теме WordPress
26.01.2026
Как избежать проблем с кэшированием в WordPress: практические советы
09.12.2025
Как добавить автоматическое оптимизирование базы данных в WordPress
08.03.2026
Как удалить пустые мета поля в WordPress через код и плагины
24.02.2026
Как использовать хуки WooCommerce для дополнительного функционала
16.01.2026
×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше