Автоматизация отчетности по результатам опросов в WordPress — важная задача для владельцев сайтов, которые регулярно собирают мнения пользователей. В этой статье я расскажу, как создать систему автоматических отчетов, которая будет собирать данные опросов, формировать сводки и отправлять их на электронную почту или сохранять в удобном формате для дальнейшего анализа.
Почему важна автоматизация отчетов опросов в WordPress
Регулярное получение результатов опросов в удобном виде экономит время и помогает принимать решения быстро и обоснованно. Вместо ручного просмотра каждого опроса и экспорта результатов можно настроить автоматическую генерацию отчетов, которые будут включать нужные метрики и визуализации.
Особенно это актуально для сайтов с большим количеством опросов или когда опросы проходят регулярно (например, ежедневные или еженедельные).
В этой статье мы рассмотрим, как реализовать такую систему на базе популярных плагинов опросов и собственных PHP-решений.
Выбор плагина для опросов с возможностью получения данных
WP-Polls и WPForms Polls
Для начала нужно выбрать плагин, который позволяет легко получать данные опросов через API или функции. Например, WP-Polls — простой и популярный плагин, но у него нет готового API для получения результатов. В этом случае придется читать данные из базы.
Более удобным вариантом является WPForms с дополнением Polls addon, где все результаты доступны через встроенные методы и можно выгружать их в CSV.
Как получить результаты опросов программно
Рассмотрим пример для WP-Polls, где данные хранятся в базе данных WordPress. Для получения результатов можно использовать следующий код:
function wppollsru_get_poll_results($poll_id) {
global $wpdb;
$table_votes = $wpdb->prefix . 'pollsq_votes';
$table_answers = $wpdb->prefix . 'pollsq_answers';
// Получаем количество голосов за каждый ответ
$results = $wpdb->get_results($wpdb->prepare(
"SELECT answers.answer_text, COUNT(votes.vote_id) AS votes_count
FROM $table_answers AS answers
LEFT JOIN $table_votes AS votes ON answers.aid = votes.aid
WHERE answers.pollid = %d
GROUP BY answers.aid",
$poll_id
));
return $results;
}Этот код возвращает массив с вариантами ответов и количеством голосов. Теперь можно использовать эти данные для формирования отчета.
Формирование отчета и отправка по email
Чтобы автоматически формировать отчет, создадим функцию, которая собирает данные и конвертирует в HTML-таблицу с результатами:
function wppollsru_generate_report_html($poll_id) {
$results = wppollsru_get_poll_results($poll_id);
$html = '<h2>Отчет по опросу №' . $poll_id . '</h2>';
$html .= '<table border="1" cellpadding="5" cellspacing="0">';
$html .= '<tr><th>Вариант ответа</th><th>Голоса</th></tr>';
foreach ($results as $row) {
$html .= '<tr><td>' . esc_html($row->answer_text) . '</td><td>' . intval($row->votes_count) . '</td></tr>';
}
$html .= '</table>';
return $html;
}Для отправки отчета по почте воспользуемся стандартной функцией wp_mail и добавим крон-задачу, которая будет запускаться по расписанию:
function wppollsru_send_report_email() {
$poll_id = 1; // ID опроса
$to = 'admin@example.com';
$subject = 'Автоматический отчет по опросу';
$message = wppollsru_generate_report_html($poll_id);
$headers = array('Content-Type: text/html; charset=UTF-8');
wp_mail($to, $subject, $message, $headers);
}
// Регистрируем событие в кроне, если оно не зарегистрировано
if (!wp_next_scheduled('wppollsru_daily_report_event')) {
wp_schedule_event(time(), 'daily', 'wppollsru_daily_report_event');
}
add_action('wppollsru_daily_report_event', 'wppollsru_send_report_email');Теперь каждый день будет отправляться письмо с отчетом по выбранному опросу.
Добавление графиков к отчету с помощью Chart.js
Для более наглядного отчета полезно добавить графики. Один из самых простых вариантов — использовать библиотеку Chart.js. Ниже пример, как встроить график в HTML-отчет.
В функции генерации отчета нужно добавить блок с <canvas> и скриптом, который отрисует диаграмму:
function wppollsru_generate_report_with_chart($poll_id) {
$results = wppollsru_get_poll_results($poll_id);
$labels = [];
$votes = [];
foreach ($results as $row) {
$labels[] = esc_js($row->answer_text);
$votes[] = intval($row->votes_count);
}
ob_start();
?>
<h2>Отчет по опросу №<?php echo $poll_id; ?></h2>
<canvas id="wppollsruChart" width="400" height="200"></canvas>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<script>
const ctx = document.getElementById('wppollsruChart').getContext('2d');
const chart = new Chart(ctx, {
type: 'bar',
data: {
labels: <?php echo json_encode($labels); ?>,
datasets: [{
label: 'Голоса',
data: <?php echo json_encode($votes); ?>,
backgroundColor: 'rgba(54, 162, 235, 0.6)',
borderColor: 'rgba(54, 162, 235, 1)',
borderWidth: 1
}]
},
options: {
scales: {
y: { beginAtZero: true }
}
}
});
</script>
<?php
return ob_get_clean();
}Такой отчет можно сохранять в HTML-файл и прикреплять к письму, либо выводить на странице в админке.
Использование плагина Expert Review для расширенной аналитики
Если вы хотите не просто собирать голоса, а анализировать ответы более глубоко, советую обратить внимание на плагин Expert Review. Он добавляет возможность детального анализа и построения отчетов с графиками внутри WordPress.
Плагин интегрируется с опросами и позволяет экспортировать данные, а также настраивать автоматические рассылки отчетов.
Выводы и рекомендации
Автоматический отчет по опросам в WordPress значительно упрощает работу с обратной связью от пользователей. Используя приведенный пример кода, вы можете быстро настроить базовый функционал, а при необходимости расширить его графиками и удобным экспортом.
Рекомендую тестировать код на тестовом сайте, а для сложных решений рассмотреть использование профессиональных плагинов, таких как Expert Review или WPForms Polls, чтобы сэкономить время и обеспечить надежность.