Как изменить и удалить стандартную регистрацию WordPress

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

Почему стоит менять или отключать стандартную регистрацию WordPress

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

  • Добавить кастомные поля (например, номер телефона, согласие с политикой конфиденциальности).
  • Изменить внешний вид и логику регистрации.
  • Ограничить регистрацию, например, закрыть её для всех или только для определённых пользователей.
  • Защититься от спама и ботов.

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

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

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

  1. Перейдите в Консоль » Настройки » Общие.
  2. Снимите галочку с пункта Любой желающий может зарегистрироваться.
  3. Сохраните изменения.

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

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

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

Добавление дополнительных полей в форму регистрации WordPress

Стандартная форма регистрации содержит только поля для имени пользователя и email. Для более гибкой регистрации часто нужно добавить свои поля. Рассмотрим пример добавления поля «Телефон».

Добавляем поле «Телефон» в форму регистрации

Для этого используем хуки WordPress. Добавим поле с помощью register_form:

function wpcourse_register_add_phone_field() {
    $phone = (isset($_POST['wpcourse_phone'])) ? esc_attr($_POST['wpcourse_phone']) : '';
    ?>
    <p>
        <label for="wpcourse_phone">Телефон<br />
            <input type="text" name="wpcourse_phone" id="wpcourse_phone" class="input" value="<?php echo $phone; ?>" size="25" /></label>
    </p>
    <?php
}
add_action('register_form', 'wpcourse_register_add_phone_field');

Валидация поля «Телефон»

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

function wpcourse_register_validate_phone($errors, $sanitized_user_login, $user_email) {
    if (empty($_POST['wpcourse_phone']) || !preg_match('/^\+?\d{10,15}$/', $_POST['wpcourse_phone'])) {
        $errors->add('wpcourse_phone_error', '<strong>Ошибка</strong>: Пожалуйста, введите корректный номер телефона.');
    }
    return $errors;
}
add_filter('registration_errors', 'wpcourse_register_validate_phone', 10, 3);

Сохранение дополнительного поля в профиль пользователя

После успешной регистрации нужно сохранить номер телефона в метаполе пользователя:

function wpcourse_register_save_phone($user_id) {
    if (!empty($_POST['wpcourse_phone'])) {
        update_user_meta($user_id, 'wpcourse_phone', sanitize_text_field($_POST['wpcourse_phone']));
    }
}
add_action('user_register', 'wpcourse_register_save_phone');

Просмотр и редактирование нового поля в профиле пользователя

Чтобы администратор мог видеть и менять номер телефона, добавим поле в профиль пользователя:

function wpcourse_show_phone_in_profile($user) {
    ?>
    <h3>Дополнительные данные</h3>
    <table class="form-table">
        <tr>
            <th><label for="wpcourse_phone">Телефон</label></th>
            <td>
                <input type="text" name="wpcourse_phone" id="wpcourse_phone" value="<?php echo esc_attr(get_user_meta($user->ID, 'wpcourse_phone', true)); ?>" class="regular-text" /><br />
                <span class="description">Введите номер телефона пользователя.</span>
            </td>
        </tr>
    </table>
    <?php
}
add_action('show_user_profile', 'wpcourse_show_phone_in_profile');
add_action('edit_user_profile', 'wpcourse_show_phone_in_profile');

И сохранение при изменении профиля:

function wpcourse_save_phone_in_profile($user_id) {
    if (!current_user_can('edit_user', $user_id)) {
        return false;
    }
    update_user_meta($user_id, 'wpcourse_phone', sanitize_text_field($_POST['wpcourse_phone']));
}
add_action('personal_options_update', 'wpcourse_save_phone_in_profile');
add_action('edit_user_profile_update', 'wpcourse_save_phone_in_profile');

Лучшие плагины для кастомизации регистрации в WordPress

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

  • User Registration — удобный конструктор форм с поддержкой дополнительных полей, валидации и интеграций.
  • WP User Manager — расширенное управление пользователями с кастомными регистрационными формами и профилями.
  • Profile Builder — мощный плагин для создания регистрационных и профайл форм с множеством опций.
  • Theme My Login — позволяет изменить внешний вид стандартных страниц регистрации и входа, а также добавить дополнительные поля.

Все эти плагины поддерживают добавление кастомных полей, капчу, email-подтверждение и другие полезные функции.

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

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

function wpcourse_registration_redirect() {
    return home_url('/welcome/'); // Замените на нужный URL
}
add_filter('registration_redirect', 'wpcourse_registration_redirect');

Так вы сможете направить новых пользователей на страницу приветствия или с инструкциями.

Защита формы регистрации от спама

Форма регистрации часто атакуется ботами, поэтому важно добавить защиту. Вот несколько советов:

  • Используйте капчу — Google reCAPTCHA или плагины с поддержкой капчи.
  • Добавляйте скрытые поля (honeypot) для ловли ботов.
  • Ограничьте частоту регистраций с одного IP с помощью плагинов безопасности.
  • Используйте плагины антиспама, например, Akismet.

Пример добавления honeypot поля:

function wpcourse_register_add_honeypot() {
    ?>
    <p style="display:none;">
        <label for="wpcourse_hp">Leave this field empty</label>
        <input type="text" name="wpcourse_hp" id="wpcourse_hp" value="" />
    </p>
    <?php
}
add_action('register_form', 'wpcourse_register_add_honeypot');

function wpcourse_register_honeypot_check($errors, $sanitized_user_login, $user_email) {
    if (!empty($_POST['wpcourse_hp'])) {
        $errors->add('wpcourse_hp_error', '<strong>Ошибка</strong>: Ошибка валидации.');
    }
    return $errors;
}
add_filter('registration_errors', 'wpcourse_register_honeypot_check', 10, 3);
Как установить ограничение на количество входящих запросов в WordPress
20.01.2026
Автоматическое удаление неоплаченных заказов в WooCommerce
24.05.2026
Как очистить кэш WooCommerce при изменении заказа без плагинов
09.05.2026
Как использовать хуки для оптимизации WordPress
14.01.2026
Как удалить псевдо-дублированный контент в WordPress
20.12.2025

Хотите научиться создавать сайты и зарабатывать на этом от 30 000 рублей в месяц?

Записаться на курс сейчас