Иногда стандартной формы регистрации 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 и сделаете её более удобной и информативной для вашего сайта.