wpwebsite.ru wordpress WPWebSite

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

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

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

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

Как добавить поле в форму регистрации через хуки WordPress

Подключение дополнительных полей к форме регистрации требует работы с несколькими хуками:

  • register_form — для вывода полей на страницу регистрации;
  • registration_errors — для проверки введённых данных и вывода ошибок;
  • user_register — для сохранения новых данных пользователя.

Рассмотрим пример добавления поля «Телефон».

Вывод поля «Телефон» в форме

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

Этот код добавит поле Телефон в стандартную форму регистрации.

Проверка введённого телефона

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

Здесь мы проверяем, что телефон введён и соответствует формату (10-15 цифр с возможным + в начале).

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

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

Данные сохраняются в метаполе «phone» для пользователя.

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

Чтобы администраторы могли видеть и редактировать поле «Телефон» в админке WordPress, добавим соответствующий вывод и сохранение.

Добавляем поле в профиль пользователя

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

Сохраняем изменения в профиле

function wpwebsite_save_phone_field_in_profile( $user_id ) {
    if ( current_user_can( 'edit_user', $user_id ) ) {
        if ( isset( $_POST['wpwebsite_phone'] ) ) {
            update_user_meta( $user_id, 'phone', sanitize_text_field( $_POST['wpwebsite_phone'] ) );
        }
    }
}
add_action( 'personal_options_update', 'wpwebsite_save_phone_field_in_profile' );
add_action( 'edit_user_profile_update', 'wpwebsite_save_phone_field_in_profile' );

Теперь телефон можно редактировать у пользователя в админке WordPress.

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

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

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

Для интеграции с плагинами WPShop, например, Clearfy Pro можно использовать функции оптимизации и расширения безопасности регистрации.

Как протестировать и отладить добавленные поля

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

  • Отображение новых полей на странице регистрации;
  • Вывод ошибок при неправильном вводе;
  • Сохранение данных и отображение в профиле;
  • Корректную работу с плагинами безопасности и кэширования.

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

Заключение

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

×
WPShop
партнерка без «но»!

До 3225₽ за каждую продажу

Подключиться к игре