Зачем добавлять дополнительные поля в форму регистрации WordPress
Стандартная форма регистрации WordPress содержит минимальный набор полей: имя пользователя, электронную почту и пароль. Но часто возникает необходимость собрать дополнительные данные от пользователей — например, номер телефона, дату рождения, ссылку на профиль в соцсетях или согласие с пользовательским соглашением. Добавление новых полей помогает сделать регистрацию более информативной и пригодной для дальнейшей работы с пользователями.
В этой статье мы разберем, как добавить дополнительные поля в форму регистрации WordPress, сохранить эти данные, а также вывести их в профиле пользователя.
Выбор способа: плагин или собственный код
Существует два основных способа расширить форму регистрации:
- Использовать готовые плагины, которые позволяют добавлять поля без программирования.
- Реализовать добавление полей самостоятельно через хуки и фильтры WordPress.
Рассмотрим оба варианта, чтобы вы могли выбрать удобный для себя.
Популярные плагины для добавления полей в регистрацию WordPress
Если вы хотите быстро и без кода расширить форму, обратите внимание на следующие плагины:
- User Registration – Custom Registration Form, Login and User Profile for WordPress — простой конструктор форм с поддержкой кастомных полей.
- Profile Builder — мощный плагин с возможностью добавлять поля в форму регистрации и профиль пользователя.
- RegistrationMagic — комплексное решение с гибкой настройкой форм и полей.
Все они предлагают удобный интерфейс для создания форм и сохранения дополнительных данных.
Добавление поля в форму регистрации через код: пошаговое руководство
Если вы предпочитаете контролировать процесс и минимизировать количество плагинов, можно добавить поле программно.
Шаг 1. Добавляем поле в форму регистрации
Используем хук register_form, чтобы вывести дополнительное поле. Например, добавим поле «Номер телефона».
function wpsetup_add_phone_field() {
$phone = ( isset($_POST['wpsetup_phone']) ) ? sanitize_text_field($_POST['wpsetup_phone']) : '';
?>
<p>
<label for="wpsetup_phone">Номер телефона</label><br />
<input type="text" name="wpsetup_phone" id="wpsetup_phone" class="input" value="<?php echo esc_attr($phone); ?>" size="25" />
</p>
<?php
}
add_action('register_form', 'wpsetup_add_phone_field');Шаг 2. Проверяем введенные данные
Добавим проверку, чтобы поле не было пустым и содержало допустимые символы. Для этого используем фильтр registration_errors.
function wpsetup_validate_phone_field($errors, $sanitized_user_login, $user_email) {
if ( empty($_POST['wpsetup_phone']) || !preg_match('/^[0-9+\-\s]+$/', $_POST['wpsetup_phone']) ) {
$errors->add('wpsetup_phone_error', '<strong>Ошибка</strong>: Введите корректный номер телефона.');
}
return $errors;
}
add_filter('registration_errors', 'wpsetup_validate_phone_field', 10, 3);Шаг 3. Сохраняем данные дополнительного поля
Используем хук user_register, чтобы сохранить номер телефона в мета-поле пользователя.
function wpsetup_save_phone_field($user_id) {
if ( !empty($_POST['wpsetup_phone']) ) {
update_user_meta($user_id, 'wpsetup_phone', sanitize_text_field($_POST['wpsetup_phone']));
}
}
add_action('user_register', 'wpsetup_save_phone_field');Шаг 4. Отображаем новое поле в профиле пользователя
Добавим поле для просмотра и редактирования номера телефона в админке.
function wpsetup_show_phone_profile($user) {
$phone = get_user_meta($user->ID, 'wpsetup_phone', true);
?>
<h3>Дополнительные данные</h3>
<table class="form-table">
<tr>
<th><label for="wpsetup_phone">Номер телефона</label></th>
<td>
<input type="text" name="wpsetup_phone" id="wpsetup_phone" value="<?php echo esc_attr($phone); ?>" class="regular-text" />
</td>
</tr>
</table>
<?php
}
add_action('show_user_profile', 'wpsetup_show_phone_profile');
add_action('edit_user_profile', 'wpsetup_show_phone_profile');
function wpsetup_save_phone_profile($user_id) {
if ( current_user_can('edit_user', $user_id) ) {
update_user_meta($user_id, 'wpsetup_phone', sanitize_text_field($_POST['wpsetup_phone']));
}
}
add_action('personal_options_update', 'wpsetup_save_phone_profile');
add_action('edit_user_profile_update', 'wpsetup_save_phone_profile');Советы по безопасности и удобству
При добавлении полей в форму регистрации важно соблюдать несколько правил:
- Всегда используйте
sanitize_text_fieldи другие функции очистки данных. - Проверяйте корректность введенных данных и показывайте понятные ошибки.
- Не забывайте проверять права пользователя при сохранении данных в профиле.
- Добавьте стили и скрипты, если нужно улучшить внешний вид и удобство заполнения.
Заключение
Добавление пользовательских полей в форму регистрации WordPress позволяет расширить функциональность сайта и собирать важные данные о пользователях. Вы можете сделать это с помощью готовых плагинов или реализовать самостоятельно, используя хуки и фильтры. Приведенный пример с полем "Номер телефона" можно адаптировать под любые задачи — главное понимать логику и соблюдать безопасность.