Форма регистрации в WordPress по умолчанию содержит минимальный набор полей: имя пользователя, электронная почта и пароль. Но часто возникает необходимость добавить дополнительные поля или изменить существующие, например, добавить телефон, дату рождения или чекбоксы с согласием. В этой статье подробно рассмотрим, как это сделать без плагинов и с помощью плагинов, а также приведём примеры кода с пояснениями.
Почему стоит менять стандартную форму регистрации WordPress
Стандартная форма регистрации очень ограничена и не позволяет собирать необходимую информацию о пользователях. Добавление кастомных полей помогает:
- Собирать важные для бизнеса данные (телефон, адрес, дата рождения и пр.).
- Добавлять пользовательские настройки и предпочтения прямо при регистрации.
- Улучшать взаимодействие с пользователями и сегментировать их.
Однако стоит помнить, что неправильное добавление полей может привести к ошибкам регистрации или проблемам с безопасностью, поэтому важно соблюдать правила валидации и обработки данных.
Способы изменить и добавить поля в форму регистрации WordPress
Существует два основных подхода:
1. Использование хуков и фильтров WordPress
WordPress предоставляет несколько хуков, с помощью которых можно добавлять поля в форму регистрации, проверять их и сохранять данные. Главные хуки:
register_form— добавляет HTML новые поля в форму.registration_errors— проверяет правильность заполнения новых полей.user_register— сохраняет данные в метаполя пользователя после регистрации.
Рассмотрим пример добавления поля «Телефон».
Пример: добавляем поле телефон в форму регистрации
function wpdream_add_phone_field() {
?>
<p>
<label for="phone">Телефон</label><br/>
<input type="text" name="phone" id="phone" class="input" value="<?php echo esc_attr( wp_unslash( $_POST['phone'] ?? '' ) ); ?>" size="25" />
</p>
<?php
}
add_action( 'register_form', 'wpdream_add_phone_field' );
function wpdream_validate_phone_field( $errors, $sanitized_user_login, $user_email ) {
if ( empty( $_POST['phone'] ) || ! preg_match( '/^\+?\d{10,15}$/', $_POST['phone'] ) ) {
$errors->add( 'phone_error', 'Пожалуйста, введите корректный номер телефона.' );
}
return $errors;
}
add_filter( 'registration_errors', 'wpdream_validate_phone_field', 10, 3 );
function wpdream_save_phone_field( $user_id ) {
if ( ! empty( $_POST['phone'] ) ) {
update_user_meta( $user_id, 'phone', sanitize_text_field( $_POST['phone'] ) );
}
}
add_action( 'user_register', 'wpdream_save_phone_field' );В результате при регистрации появится новое поле «Телефон», которое обязательно к заполнению, и данные будут сохранены в метаполе пользователя.
2. Использование плагинов для расширения формы регистрации
Если не хочется писать код, можно воспользоваться готовыми плагинами, которые позволяют создавать и настраивать поля регистрации через удобный интерфейс.
Популярные плагины:
- Clearfy Pro — оптимизация и расширение функционала, в том числе регистрация с кастомными полями.
- WPCommunity — плагин для создания форума с расширенной регистрацией.
- My Popup — можно использовать для вывода кастомных форм регистрации и сбора данных.
Плагины позволяют создавать поля разных типов (текст, дата, выбор, чекбоксы) и гибко настраивать валидацию, что значительно упрощает задачу.
Как отобразить и использовать дополнительные поля в профиле пользователя
Добавленные поля нужно не только сохранить, но и отображать в админке и профиле пользователя, чтобы иметь к ним доступ.
Добавляем поле в профиль пользователя в админке
function wpdream_show_phone_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', 'wpdream_show_phone_in_profile' );
add_action( 'edit_user_profile', 'wpdream_show_phone_in_profile' );
function wpdream_save_phone_in_profile( $user_id ) {
if ( current_user_can( 'edit_user', $user_id ) && isset( $_POST['phone'] ) ) {
update_user_meta( $user_id, 'phone', sanitize_text_field( $_POST['phone'] ) );
}
}
add_action( 'personal_options_update', 'wpdream_save_phone_in_profile' );
add_action( 'edit_user_profile_update', 'wpdream_save_phone_in_profile' );Таким образом, администратор и сам пользователь смогут видеть и изменять телефон напрямую в профиле WordPress.
Советы и рекомендации по безопасности и удобству
При добавлении полей регистрации важно:
- Всегда валидировать и фильтровать данные, чтобы избежать XSS и других уязвимостей.
- Не добавлять слишком много полей, чтобы не усложнять регистрацию и не отпугивать пользователей.
- Проверять корректность формата, например, используя регулярные выражения для телефона или email.
- Использовать nonce-поля для защиты от CSRF-атак, если форма кастомная.
- Если используете плагины, регулярно обновляйте их и проверяйте совместимость с вашей версией WordPress.
Заключение
Добавление и изменение полей в форме регистрации WordPress — частая задача для разработчиков и владельцев сайтов. С помощью хуков WordPress можно быстро и гибко реализовать нужный функционал своими руками, а плагины помогают упростить процесс без знаний программирования. Главное — помнить о безопасности и удобстве пользователей при внесении изменений.