Часто стандартная форма регистрации WordPress не удовлетворяет требованиям проекта — нужно добавить дополнительные поля, например, номер телефона, дату рождения или согласие с условиями. В этой статье подробно рассмотрим, как добавить новое поле в форму регистрации WordPress с помощью популярных плагинов и собственных функций. Это позволит собрать нужные данные от пользователей и сохранить их в базе.
Почему важно добавлять дополнительные поля в форму регистрации WordPress
Стандартный набор полей регистрации в WordPress ограничен: имя пользователя, email и пароль. Но для многих сайтов этого недостаточно. Например, для интернет-магазина важен номер телефона, для сообщества — дата рождения, для рассылки — согласие на обработку данных. Добавление дополнительных полей позволяет расширить возможности сайта и собрать важную информацию с пользователей.
Однако при добавлении полей нужно соблюдать безопасность и удобство пользователя. Поля должны валидироваться, а данные — правильно сохраняться и выводиться в админке.
Добавление поля в форму регистрации с помощью плагина User Registration
Один из удобных плагинов для расширения формы регистрации — User Registration. Он позволяет создавать кастомные формы с любым количеством полей через удобный интерфейс.
После установки и активации плагина можно:
- Перейти в раздел «User Registration» в админке;
- Создать новую форму, добавив нужные поля — текстовые, checkbox, селекты;
- Настроить обязательность и валидацию полей;
- Вставить шорткод формы на страницу регистрации.
Плагин автоматически сохранит данные в метаполях пользователя, и их можно будет просмотреть в профиле в админке.
Добавление пользовательского поля в форму регистрации через код
Если хочется более гибкой настройки или не использовать плагин, можно добавить поле через код в functions.php темы или свой плагин. Рассмотрим, как добавить поле «Телефон».
Вывод дополнительного поля в форме регистрации
function wpgen_add_phone_field() {
?>
<p>
<label for="phone">Телефон</label>
<input type="text" name="phone" id="phone" class="input" value="<?php echo esc_attr( wpgen_get_post_value('phone') ); ?>" size="25" />
</p>
<?php
}
add_action('register_form', 'wpgen_add_phone_field');
Здесь мы добавляем простой текстовый input для телефона. Функция wpgen_get_post_value() — вспомогательная, чтобы сохранить введённое значение при ошибках (ее код можно реализовать самостоятельно).
Валидация поля телефона
function wpgen_validate_phone_field($errors, $sanitized_user_login, $user_email) {
if (empty($_POST['phone'])) {
$errors->add('phone_error', '<strong>Ошибка</strong>: Поле Телефон обязательно.');
} elseif (!preg_match('/^\+?[0-9\s\-\(\)]+$/', $_POST['phone'])) {
$errors->add('phone_error', '<strong>Ошибка</strong>: Неверный формат телефона.');
}
return $errors;
}
add_filter('registration_errors', 'wpgen_validate_phone_field', 10, 3);
Регулярное выражение допускает цифры, пробелы, скобки и знак + в начале, что подходит для большинства телефонов.
Сохранение поля телефона в метаданные пользователя
function wpgen_save_phone_field($user_id) {
if (!empty($_POST['phone'])) {
update_user_meta($user_id, 'phone', sanitize_text_field($_POST['phone']));
}
}
add_action('user_register', 'wpgen_save_phone_field');
После успешной регистрации значение телефона сохраняется к пользователю.
Вывод поля телефона в профиле пользователя в админке
function wpgen_show_phone_in_profile($user) {
$phone = get_user_meta($user->ID, 'phone', true);
?>
<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($phone); ?>" class="regular-text" /></td>
</tr>
</table>
<?php
}
add_action('show_user_profile', 'wpgen_show_phone_in_profile');
add_action('edit_user_profile', 'wpgen_show_phone_in_profile');
Таким образом, администратор может видеть и редактировать телефон в профиле пользователя.
Использование плагина Clearfy Pro для управления формой регистрации
Если у вас установлен Clearfy Pro, можно использовать его возможности для расширения форм и управления пользовательскими метаполями. В Clearfy есть модуль для добавления и настройки дополнительных полей без кода, интеграция с WooCommerce и другими плагинами.
Это удобный способ быстро добавить поле, не углубляясь в программирование, с поддержкой валидации и вывода в админке.
Советы по безопасности и удобству при добавлении полей в регистрацию
При расширении формы регистрации следует учесть несколько важных моментов:
- Обязательно валидируйте и санитизируйте данные — это поможет избежать уязвимостей и ошибок.
- Не добавляйте слишком много обязательных полей — это может отпугнуть пользователей.
- Используйте понятные подписи и подсказки к полям.
- Проверяйте совместимость с плагинами безопасности и кеширования.
- Храните данные в пользовательских метаполях с префиксом для избежания конфликтов.
Выводы и рекомендации
Добавление дополнительных полей в форму регистрации WordPress — частая задача, которую можно решить разными способами. Плагины, такие как User Registration и Clearfy Pro, позволяют быстро настроить форму без кода. Если же нужна максимальная гибкость, можно реализовать добавление поля через хуки и фильтры, как показано в примерах выше.
Такой подход позволяет собрать нужные данные с пользователей, повысить качество взаимодействия и удобство администрирования сайта.