wphow.ru wordpress WPHow

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

Иногда стандартной формы регистрации WordPress недостаточно для сбора нужной информации от пользователя. Например, вам может понадобиться добавить поле «Телефон», «Компания» или любой другой параметр. В этой статье мы подробно рассмотрим, как добавить собственные поля в форму регистрации WordPress, сохранить данные и вывести их в админке, используя как код, так и популярные плагины.

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

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

  • Собрать дополнительную информацию для коммуникации или маркетинга.
  • Улучшить пользовательский профиль для персонализации контента.
  • Организовать более точную сегментацию пользователей.

Все это возможно реализовать с помощью простого кода и/или плагинов.

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

Давайте рассмотрим, как вручную добавить поле 'Телефон' в стандартную форму регистрации WordPress, сохранить значение и отобразить его в профиле пользователя в админке.

1. Вывод дополнительного поля на форму регистрации

Для вывода дополнительного поля используем хук register_form и функцию wphow_add_phone_field_to_registration:

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

Этот код добавляет поле 'Телефон' на страницу регистрации и сохраняет введённое значение при ошибках.

2. Валидация введённых данных

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

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

Здесь мы проверяем, что поле не пустое и содержит только допустимые символы, например цифры, пробелы, дефисы и опциональный знак '+'.

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

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

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

Таким образом, данные сохраняются в базе и привязываются к пользователю.

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

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

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

И не забудьте сохранить изменения при редактировании:

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

Использование плагинов для добавления поля в регистрацию

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

1. User Registration – Custom Registration Form, Login and User Profile for WordPress

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

2. Profile Builder

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

3. WP User Manager

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

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

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

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

Следуя этим шагам, вы легко расширите функционал стандартной регистрации WordPress и сделаете её более удобной и информативной для вашего сайта.

×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше