Как использовать хуки для автоматического отчета по опросам в WordPress

Диагностика задачи: зачем автоматизировать отчет по опросам

Владельцы сайтов на WordPress с опросами часто нуждаются в оперативных отчетах для анализа результатов и быстрой реакции на изменения. Ручной экспорт данных или просмотр результатов в админке неудобны, особенно при большом объеме голосов. Автоматизация с помощью хуков WordPress и плагинов опросов позволяет формировать и отправлять отчеты без участия администратора.

Пошаговое решение: настройка автоматического отчета через хуки

1. Выбор подходящего плагина с хуками

Для примера возьмем плагин WP-Polls — популярный, с открытым API и хуками. Если у вас другой плагин, проверьте документацию на наличие экшенов и фильтров для обработки голосов.

2. Создание функции для генерации отчета

Функция собирает результаты опроса по ID, форматирует их и отправляет на email.

function wppolls_generate_report($poll_id) {
    global $wpdb;
    // Таблица голосов WP-Polls
    $table_votes = $wpdb->prefix . 'pollsq_votes';
    $table_answers = $wpdb->prefix . 'pollsq_answers';

    // Получаем вопросы и ответы опроса
    $answers = $wpdb->get_results($wpdb->prepare(
        "SELECT awid, answer_text FROM $table_answers WHERE poll_id = %d", $poll_id
    ), ARRAY_A);

    // Получаем количество голосов по каждому ответу
    $votes_count = [];
    foreach ($answers as $answer) {
        $votes = $wpdb->get_var($wpdb->prepare(
            "SELECT COUNT(*) FROM $table_votes WHERE awid = %d", $answer['awid']
        ));
        $votes_count[$answer['answer_text']] = intval($votes);
    }

    // Формируем текст отчета
    $report = "Отчет по опросу ID {$poll_id}:\n";
    foreach ($votes_count as $answer_text => $count) {
        $report .= "- {$answer_text}: {$count} голосов\n";
    }
    
    return $report;
}

3. Автоматический вызов функции при новом голосе с помощью хука

WP-Polls имеет экшен poll_vote_added, вызываемый после добавления голоса. Используем его для отправки отчета.

function wppolls_send_report_after_vote($poll_id) {
    $report = wppolls_generate_report($poll_id);
    $to = 'admin@example.com'; // замените на нужный email
    $subject = "Новый отчет по опросу #{$poll_id}";
    wp_mail($to, $subject, $report);
}
add_action('poll_vote_added', 'wppolls_send_report_after_vote');

Проверка результата после внедрения

  1. Проголосуйте в любом опросе на сайте.
  2. Проверьте почту, указанную в функции wppolls_send_report_after_vote. Должно прийти письмо с отчетом по текущему состоянию опроса.
  3. Убедитесь, что структура письма соответствует ожидаемой: список вариантов и количество голосов.
  4. Просмотрите логи почтового сервера на предмет ошибок, если письмо не пришло.

Частые ошибки и как исправить

  • Письма не отправляются: проверьте, работает ли функция wp_mail на вашем хостинге. Можно использовать плагин WP Mail SMTP для диагностики.
  • Плохое форматирование отчета: убедитесь, что в базе данных нет поврежденных данных, и что функции форматируют строки корректно.
  • Хук poll_vote_added не срабатывает: убедитесь, что используемый плагин поддерживает этот экшен и он не переопределен в вашей теме или другом плагине.
  • Отправка отчета слишком частая: если голосов много, можно добавить ограничение по времени — отправлять отчет раз в N минут с помощью транзиентов WordPress.

Практические советы по безопасности и производительности

  • Используйте wp_mail с корректным заголовком From, чтобы письма не попадали в спам.
  • Для больших сайтов с интенсивным голосованием избегайте отправки письма на каждый голос — лучше агрегировать данные и отправлять раз в час или день.
  • Храните ID опросов в настройках, если хотите массово генерировать отчеты для нескольких опросов.
  • Для более сложных отчетов используйте сторонние библиотеки для генерации PDF или Excel, но помните про нагрузку на сервер.

Сравнение способов автоматизации отчетов по опросам в WordPress

МетодПлюсыМинусы
Использование хуков плагина (пример WP-Polls)Автоматизация при каждом голосе, простота реализацииВысокая нагрузка при частом голосовании, зависит от плагина
Периодический WP-Cron с генерацией отчетаКонтроль частоты отчетов, меньшая нагрузкаСложнее реализовать, задержка в обновлении данных
Внешние сервисы и интеграции (Zapier, Integromat)Гибкость, возможность сложной аналитикиЗависимость от сторонних сервисов, дополнительные расходы
Автоматическое удаление старых голосований в опросах WordPress: практическое руководство
06.06.2026
Автопубликация опросов в WordPress: настройка и автоматизация
30.11.2025
Как создать опрос с автоматическим экспортом результатов в CSV в WordPress
10.04.2026
Как сделать защиту от повторных голосов в опросах WordPress без изменения базы данных
11.05.2026
Оптимизация базы данных опросов WordPress: практическое руководство
26.04.2026