Часто стандартные опросы в WordPress не позволяют собрать достаточно информации для анализа. Чтобы получить более детальные данные, можно добавить пользовательские поля в форму опроса. В этой статье разберёмся, как расширить функциональность опросов с помощью пользовательских полей, используя код и существующие плагины.
Почему стоит добавлять пользовательские поля в опросы WordPress
Стандартные плагины для опросов предоставляют базовый набор полей — обычно это варианты ответа и текстовые поля для комментариев. Но что если нужно узнать возраст, город или дополнительные комментарии участников? Добавление пользовательских полей позволяет:
- Собрать более полные данные о респондентах.
- Сегментировать аудиторию по дополнительным признакам.
- Создавать сложные формы с условной логикой.
Это особенно актуально для маркетинговых исследований, обратной связи, анкетирования клиентов.
Использование плагинов для добавления пользовательских полей
Самый простой способ расширить опросы — использовать плагины, поддерживающие кастомные поля. Рассмотрим два популярных варианта.
1. Плагин WPForms
WPForms — мощный конструктор форм, который позволяет создавать опросы с любыми типами полей: текст, число, дата, выпадающие списки и др. Для создания опроса с пользовательскими полями нужно:
- Установить и активировать WPForms.
- Создать новую форму, выбрав шаблон «Опрос».
- Добавить в форму нужные поля (например, «Возраст», «Город»).
- Включить опросные поля для подсчёта рейтинга и анализа.
WPForms автоматически собирает и сохраняет всю информацию, которую можно просмотреть в админке.
2. Плагин Formidable Forms
Formidable Forms также позволяет создавать продвинутые опросы с пользовательскими полями. Особенность — возможность использовать условную логику для отображения полей в зависимости от ответов.
Для создания опроса:
- Создайте форму с нужными полями.
- Настройте условную логику для полей, если требуется.
- Включите функции опроса для вывода результатов.
Это отличный вариант для сложных опросов с разветвлённой структурой.
Добавление пользовательских полей в опросы вручную с помощью кода
Если вы хотите более глубокого контроля и не хотите подключать большие плагины, можно добавить пользовательские поля напрямую в код опроса. Рассмотрим пример, как расширить форму опроса на WordPress, добавив поле «Возраст» и сохранив данные в базе.
Шаг 1. Создание формы с пользовательским полем
Допустим, у вас есть шорткод [wppolls_poll], который выводит опрос. Добавим к нему дополнительное поле:
function wppolls_add_custom_field() {
echo '<p><label for="wppolls_age">Возраст:</label>'
. '<input type="number" id="wppolls_age" name="wppolls_age" min="1" max="120" required></p>';
}
add_action('wppolls_before_submit_button', 'wppolls_add_custom_field');Этот код добавляет поле «Возраст» перед кнопкой отправки.
Шаг 2. Обработка и сохранение данных формы
Далее нужно обработать данные после отправки формы. Для этого используем хук отправки опроса:
function wppolls_save_custom_field($poll_id, $user_id) {
if ( isset($_POST['wppolls_age']) ) {
$age = intval($_POST['wppolls_age']);
if ($age > 0 && $age <= 120) {
update_post_meta($poll_id, '_wppolls_age_' . $user_id, $age);
}
}
}
add_action('wppolls_after_vote', 'wppolls_save_custom_field', 10, 2);Здесь мы сохраняем возраст в метаданных опроса, прикрепляя его к ID пользователя.
Шаг 3. Вывод собранных пользовательских данных в админке
Чтобы видеть возраст участников, добавим колонку в таблицу результатов:
function wppolls_add_custom_column($columns) {
$columns['age'] = 'Возраст';
return $columns;
}
add_filter('manage_wppolls_votes_columns', 'wppolls_add_custom_column');
function wppolls_show_custom_column($column, $vote_id) {
if ($column == 'age') {
$user_id = get_post_meta($vote_id, '_wppolls_user_id', true);
$poll_id = get_post_meta($vote_id, '_wppolls_poll_id', true);
$age = get_post_meta($poll_id, '_wppolls_age_' . $user_id, true);
echo esc_html($age ? $age : '—');
}
}
add_action('manage_wppolls_votes_custom_column', 'wppolls_show_custom_column', 10, 2);Теперь в списке голосов вы увидите дополнительную информацию.
Советы по безопасности и валидации пользовательских полей
При работе с пользовательскими полями важно уделять внимание безопасности и валидации:
- Используйте
intval()или другие функции для фильтрации входных данных. - Проверяйте, что значения соответствуют ожидаемому формату.
- Используйте nonce-поля для защиты от CSRF-атак.
- Экранируйте вывод с помощью
esc_html()или подобных функций.
Это поможет избежать уязвимостей и ошибок.
Заключение
Добавление пользовательских полей в опросы WordPress — отличный способ расширить функциональность и собрать более точные данные. Вы можете использовать готовые плагины, если нужны быстрое решение и удобный интерфейс, или писать собственный код для полной гибкости. Главное — грамотно обрабатывать и сохранять данные, чтобы потом эффективно их анализировать.