Добавление кастомного поля пользователя при регистрации в WordPress

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

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

По умолчанию WordPress собирает минимальный набор данных: имя пользователя, email и пароль. Однако в реальных проектах часто требуется собирать дополнительную информацию, например, номер телефона, дату рождения, согласие с пользовательским соглашением и другое. Это помогает сделать сайт более персонализированным и автоматизировать бизнес-процессы.

Добавление кастомных полей позволяет:

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

Добавление кастомного поля на страницу регистрации

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

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

В этом коде мы создаем поле для ввода телефона с обязательным заполнением (обозначено звездочкой). Значение поля сохраняется после отправки формы, чтобы пользователь не потерял введенные данные в случае ошибки.

Валидация кастомного поля при регистрации

Очень важно проверить корректность введенных данных, иначе в профиле пользователя могут появиться некорректные или пустые значения. Для этого используем хук registration_errors:

function wproot_validate_custom_register_field($errors, $sanitized_user_login, $user_email) {
    if ( empty($_POST['wproot_phone']) || !preg_match('/^[+0-9\s-]{5,20}$/', $_POST['wproot_phone']) ) {
        $errors->add('wproot_phone_error', '<strong>Ошибка:</strong> Введите корректный телефон.');
    }
    return $errors;
}
add_filter('registration_errors', 'wproot_validate_custom_register_field', 10, 3);

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

Сохранение значения кастомного поля в метаполя пользователя

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

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

Функция sanitize_text_field защищает от XSS и некорректных данных. Данные сохраняются в пользовательском метаполе wproot_phone.

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

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

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

И добавим сохранение при редактировании профиля:

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

Использование плагинов для упрощения задачи

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

  • User Registration — визуальный конструктор форм с поддержкой кастомных полей.
  • Profile Builder — расширенное управление профилями пользователей.
  • Clearfy Pro — плагин оптимизации, включающий управление пользовательскими данными.

Однако при использовании кода вы получаете максимальный контроль и минимальную нагрузку на сайт.

Резюме и рекомендации

Добавление и сохранение кастомных полей пользователя при регистрации в WordPress — задача решаемая с помощью стандартных хуков. Важно:

  • Выводить поле через register_form.
  • Проверять данные через registration_errors.
  • Сохранять мета через user_register.
  • Добавлять отображение и редактирование в админке.
  • Использовать sanitize_text_field и регулярные выражения для безопасности.

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

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
Как использовать Transients в WordPress для кэширования данных
09.02.2026
Как отключить или ограничить AJAX-запросы в WordPress для повышения производительности
24.01.2026
WooCommerce: автоматическое отключение платёжных систем по условиям
12.05.2026
Как создать собственный шорткод в WordPress: подробное руководство
17.11.2025
Как удалить неиспользуемые метаключи в WooCommerce: практическое руководство
28.04.2026
×
WordPress
прокачай свой сайт!

-20% на премиум темы и плагины

Сделай апгрейд сайта ⋙