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

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

Почему и когда нужна автоматическая модификация данных при регистрации

Часто стандартной формы регистрации недостаточно, и нужно, чтобы данные пользователя соответствовали определённым правилам или автоматически дополнялись. Например:

  • Стандартизация регистрационной информации: привести email к нижнему регистру, исправить формат имени.
  • Добавление дополнительных метаданных: номер телефона, ID партнёрской программы, статус подписки.
  • Интеграция с CRM или другими сервисами — передать данные сразу после регистрации.
  • Автоматическая роль или статус пользователя в зависимости от введённых данных.

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

Использование хука user_register для изменения данных

Хук user_register срабатывает сразу после создания пользователя и позволяет работать с ID нового пользователя. На этом этапе можно менять данные в базе, например, обновлять метаданные или профиль.

Пример функции, которая автоматически приводит email к нижнему регистру и добавляет пользовательское поле «referrer»:

function wpfaq_user_register_modify_data($user_id) {
    $user_info = get_userdata($user_id);
    $email = strtolower($user_info->user_email);
    wp_update_user(array(
        'ID' => $user_id,
        'user_email' => $email
    ));
    // Добавим дополнительное метаполе
    update_user_meta($user_id, 'referrer', 'wpfaq_campaign');
}
add_action('user_register', 'wpfaq_user_register_modify_data');

Этот код гарантирует, что email будет в нижнем регистре, а также добавляет дополнительное поле для дальнейшей логики.

Автоматическая установка роли пользователя на основе данных

Часто нужно назначать роль в зависимости от параметров регистрации. Например, если пользователь регистрируется по определённому домену email, назначить роль «подписчик».

function wpfaq_set_user_role_by_email_domain($user_id) {
    $user = get_userdata($user_id);
    $email = $user->user_email;
    $domain = substr(strrchr($email, "@"), 1);
    if ($domain === 'example.com') {
        $user->set_role('subscriber');
    } else {
        $user->set_role('customer');
    }
}
add_action('user_register', 'wpfaq_set_user_role_by_email_domain');

Такой подход упрощает классификацию пользователей без дополнительного вмешательства.

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

По умолчанию форма регистрации WordPress минимальна. Для добавления новых полей можно использовать хуки register_form для вывода и registration_errors для валидации, а затем сохранять данные в user_register.

Пример добавления поля "Телефон"

Выведем поле в форму:

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

Добавим валидацию:

function wpfaq_registration_errors_phone($errors, $sanitized_user_login, $user_email) {
    if ( empty( $_POST['phone'] ) || ! preg_match( '/^\+?\d{10,15}$/', $_POST['phone'] ) ) {
        $errors->add('phone_error', '<strong>ОШИБКА</strong>: Введите корректный номер телефона.');
    }
    return $errors;
}
add_filter( 'registration_errors', 'wpfaq_registration_errors_phone', 10, 3 );

Сохраним номер в метаданные пользователя:

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

Полезные плагины для расширения регистрации и работы с пользователями

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

  • Profile Builder — удобное расширение для создания форм регистрации с доп. полями и валидацией.
  • WPForms — конструктор форм с поддержкой регистрации и настройкой логики.
  • Clearfy Pro на wpshop.ru — ускоряет и оптимизирует работу WordPress, включая расширенные настройки пользователей.

Пример интеграции с внешним API после регистрации

Представим, что нужно отправлять данные нового пользователя в CRM. Используем тот же хук user_register:

function wpfaq_send_user_to_crm($user_id) {
    $user = get_userdata($user_id);
    $data = array(
        'email' => $user->user_email,
        'name' => $user->first_name . ' ' . $user->last_name,
        'phone' => get_user_meta($user_id, 'phone', true),
    );
    $response = wp_remote_post('https://api.crm-example.com/users', array(
        'body' => json_encode($data),
        'headers' => array('Content-Type' => 'application/json'),
    ));
    if (is_wp_error($response)) {
        error_log('Ошибка отправки данных пользователя в CRM: ' . $response->get_error_message());
    }
}
add_action('user_register', 'wpfaq_send_user_to_crm');

Такой метод позволяет автоматизировать обмен данными без ручного импорта.

Резюме

Автоматическое изменение и дополнение данных при регистрации в WordPress — мощный инструмент для кастомизации пользовательского опыта и интеграции с внешними сервисами. Использование хуков user_register, register_form, registration_errors позволяет гибко управлять процессом регистрации без сложных плагинов, а при необходимости — расширять возможности с помощью готовых решений.

Как удалить и заблокировать спам регистрации в WordPress
10.04.2026
Как удалить неиспользуемые шорткоды в WordPress
23.02.2026
Как использовать WPRemark для автоматического ответа на комментарии в WordPress
13.01.2026
Как отключить Emoji в WordPress для ускорения сайта
27.01.2026
WooCommerce: как исключить товары по атрибутам из корзины
17.04.2026