В современном WordPress-сайте часто возникает необходимость расширить стандартные формы, такие как форма комментариев, форма регистрации или контактные формы, добавив уникальные поля, которые помогут собрать больше информации от пользователей. В этой статье мы подробно разберём, как добавить уникальные поля в формы WordPress с помощью собственного кода и популярных плагинов, а также как сохранить и обработать эти данные.
Почему важно добавлять уникальные поля в формы WordPress
Стандартные формы WordPress часто слишком просты и не всегда собирают необходимую информацию. Например, форма регистрации по умолчанию включает только имя пользователя, e-mail и пароль, но если вам нужно получить дополнительную информацию — дату рождения, телефон или согласие на обработку данных — стандартных возможностей недостаточно.
Добавление уникальных полей расширяет функциональность сайта, позволяет персонализировать пользовательский опыт и собирать полезные данные для маркетинга или аналитики.
Добавление уникальных полей в форму регистрации WordPress с помощью кода
Рассмотрим пример, как добавить поле «Телефон» в форму регистрации WordPress и сохранить его в пользовательские метаданные.
Шаг 1. Добавление поля в форму регистрации
function wplog_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', 'wplog_add_phone_field');
Этот код добавляет текстовое поле «Телефон» в форму регистрации.
Шаг 2. Валидация поля
function wplog_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', 'wplog_validate_phone_field', 10, 3);
Здесь мы проверяем, что поле заполнено и номер телефона соответствует простому регулярному выражению.
Шаг 3. Сохранение данных
function wplog_save_phone_field($user_id) {
if ( ! empty($_POST['phone']) ) {
update_user_meta($user_id, 'phone', sanitize_text_field($_POST['phone']));
}
}
add_action('user_register', 'wplog_save_phone_field');
Этот код сохраняет введённый номер телефона в метаданные пользователя.
Добавление уникальных полей в контактные формы с помощью плагина Contact Form 7
Если вы используете плагин Contact Form 7, расширить формы можно с помощью дополнительных полей и настроек.
Пример добавления поля «Компания» в форму
В редакторе формы Contact Form 7 добавьте строку:
[text* company placeholder "Компания"]
Это добавит обязательное текстовое поле с плейсхолдером «Компания».
Сбор и обработка данных
Данные, введённые в поле, автоматически попадут в письмо администратора, если в шаблоне письма использовать тег [company]. Для сохранения данных в базу потребуется дополнительное расширение, например, плагин Flamingo.
Как использовать плагин Clearfy Pro для расширения форм и оптимизации сайта
Плагин Clearfy Pro предлагает множество инструментов для оптимизации WordPress, включая улучшения форм и безопасность. С его помощью можно отключить ненужные поля, добавить капчу и защитить сайт от спама.
Clearfy Pro совместим с популярными плагинами форм и поможет улучшить пользовательский опыт без лишнего кода.
Добавление уникальных полей в админку WordPress для удобного редактирования
Иногда нужно не только получать дополнительные данные от пользователей, но и редактировать их в админке. Для этого используют мета-боксы.
Пример создания мета-бокса для поля «Телефон» в профиле пользователя
function wplog_show_phone_profile_field($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', 'wplog_show_phone_profile_field');
add_action('edit_user_profile', 'wplog_show_phone_profile_field');
function wplog_save_phone_profile_field($user_id) {
if ( !current_user_can( 'edit_user', $user_id ) ) {
return false;
}
update_user_meta($user_id, 'phone', sanitize_text_field($_POST['phone']));
}
add_action('personal_options_update', 'wplog_save_phone_profile_field');
add_action('edit_user_profile_update', 'wplog_save_phone_profile_field');
Таким образом, поле «Телефон» будет доступно для редактирования в профиле пользователя в административной панели.
Советы по безопасности и удобству при работе с уникальными полями
При добавлении уникальных полей важно учесть несколько моментов:
- Валидация и санитизация данных. Никогда не доверяйте пользовательскому вводу — используйте функции
sanitize_text_field,esc_attrи другие для защиты. - Используйте nonce. Для защиты форм от CSRF-атак добавляйте проверку nonce, особенно при сохранении данных.
- Совместимость с плагинами. Проверяйте, что добавленные поля не конфликтуют с установленными плагинами и темами.
- Удобство для пользователей. Добавляйте подсказки и placeholder, чтобы пользователи понимали, что нужно вводить.
Заключение
Добавление уникальных полей в формы WordPress — задача, которая часто встречается при развитии сайта. Используя приведённые примеры кода и рекомендации, вы сможете расширить функциональность форм регистрации, комментариев и других, собирать необходимую информацию и обрабатывать её корректно и безопасно. Кроме того, популярные плагины, такие как Contact Form 7 и Clearfy Pro, облегчают работу и значительно ускоряют процесс.