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

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

Почему важно расширять форму регистрации

Иногда без дополнительных данных сложно организовать работу сайта: вести маркетинг, сегментировать пользователей, настроить персонализацию. Например, для сайта клуба полезно запросить дату рождения, чтобы поздравлять с праздниками. Для магазинов — телефон и адрес доставки. Собранные данные можно использовать в последующих email-рассылках или для анализа.

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

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

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

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

Здесь мы выводим поле с именем wpmax_phone, которое будет доступно при отправке формы.

Валидация дополнительных полей

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

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

В примере мы требуем, чтобы телефон состоял из 7-15 цифр и мог начинаться с плюса. Если условие не выполнено — показываем ошибку.

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

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

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

Теперь у каждого пользователя появится мета-ключ wpmax_phone с сохранённым телефоном.

Отображение дополнительных полей в профиле пользователя

Чтобы администраторы и сами пользователи могли видеть и редактировать новые данные, добавим поля в страницу редактирования профиля. Для этого используем хуки show_user_profile и edit_user_profile:

function wpmax_show_phone_field( $user ) {
    $phone = get_user_meta( $user->ID, 'wpmax_phone', true );
    echo '<h3>Дополнительная информация</h3>'
       . '<table class="form-table">'
       . '<tr><th><label for="wpmax_phone">Телефон</label></th><td>'
       . '<input type="text" name="wpmax_phone" id="wpmax_phone" value="' . esc_attr( $phone ) . '" class="regular-text" />'
       . '</td></tr>'
       . '</table>';
}
add_action( 'show_user_profile', 'wpmax_show_phone_field' );
add_action( 'edit_user_profile', 'wpmax_show_phone_field' );

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

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

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

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

  • User Registration — удобный конструктор форм с поддержкой дополнительных полей.
  • Profile Builder — также позволяет добавлять любые поля и настроить внешний вид.
  • Register Plus Redux — простой плагин для расширения стандартной регистрации.

Если вы хотите интегрировать расширенную регистрацию с WPMax, обратите внимание на плагин WPCommunity, который поддерживает множество дополнительных полей и гибкие настройки.

Советы по безопасности и удобству

При добавлении новых полей важно:

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

Кроме того, если планируется массовое использование, протестируйте форму на разных устройствах и браузерах.

Заключение

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

Для расширенного функционала и удобства администрирования стоит рассмотреть плагины из экосистемы WPShop, например, WPCommunity.

Как установить уникальные правила robots.txt в WordPress без плагинов
06.04.2026
WooCommerce: как отключить автоматическое обновление статуса заказов
24.05.2026
Как создать собственный шорткод в WordPress
23.11.2025
WooCommerce: как полностью отключить отмену заказов через личный кабинет
04.05.2026
Как удалить версию WordPress из HTML и REST API для повышения безопасности
26.12.2025