Как создать опрос с автоматическим экспортом результатов в CSV в WordPress

Создание опросов на сайте WordPress — популярная задача для сбора обратной связи от пользователей. Но часто возникает необходимость не просто вывести результаты опроса на экран, а автоматически сохранить их в удобном формате для анализа — например, в CSV.

В этой статье мы подробно рассмотрим, как реализовать опрос с автоматическим экспортом результатов в CSV-файл. Это позволит вам без лишних усилий получать данные для обработки в Excel, Google Sheets или специализированных BI-инструментах.

Выбор плагина для создания опроса с экспортом

Для начала стоит выбрать подходящий плагин опросов, который поддерживает работу с результатами и хранит данные в базе WordPress.

Рассмотрим два популярных варианта:

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

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

Создание кастомного решения для автоматического экспорта в CSV

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

Шаг 1. Создаем функцию для генерации CSV

Для начала напишем функцию wppolls_export_results_to_csv, которая выгружает результаты опроса в CSV и сохраняет файл в папку uploads.

function wppolls_export_results_to_csv() {
    global $wpdb;
    $polls_table = $wpdb->prefix . 'pollsq'; // таблица опросов
    $polls_data_table = $wpdb->prefix . 'pollsq_answers'; // таблица ответов

    // Получаем все опросы
    $polls = $wpdb->get_results("SELECT pollq_id, pollq_question FROM $polls_table");

    if (empty($polls)) return;

    foreach ($polls as $poll) {
        $results = $wpdb->get_results($wpdb->prepare(
            "SELECT pollans_answer, pollans_count FROM $polls_data_table WHERE pollans_pollq_id = %d",
            $poll->pollq_id
        ));

        if (empty($results)) continue;

        $csv_lines = [];
        $csv_lines[] = ["Ответ", "Количество голосов"];

        foreach ($results as $row) {
            $csv_lines[] = [$row->pollans_answer, $row->pollans_count];
        }

        $upload_dir = wp_upload_dir();
        $file_path = $upload_dir['basedir'] . '/wppolls-results-poll-' . $poll->pollq_id . '.csv';

        $fp = fopen($file_path, 'w');
        foreach ($csv_lines as $fields) {
            fputcsv($fp, $fields);
        }
        fclose($fp);
    }
}

Эта функция перебирает все опросы, получает ответы и их количество голосов, затем создает CSV-файл в стандартной папке загрузок WordPress.

Шаг 2. Запускаем экспорт после каждого голосования

Чтобы автоматически обновлять CSV после каждого нового голоса, повесим вызов функции на хук wp_ajax_wppolls_vote, который срабатывает при голосовании в WP-Polls.

add_action('wp_ajax_wppolls_vote', 'wppolls_after_vote_export_csv');
add_action('wp_ajax_nopriv_wppolls_vote', 'wppolls_after_vote_export_csv');

function wppolls_after_vote_export_csv() {
    // Выполняем стандартное поведение плагина
    do_action('wppolls_vote');

    // Экспортируем результаты
    wppolls_export_results_to_csv();
}

Таким образом, CSV-файлы с результатами будут обновляться сразу после каждого голосования без вашего вмешательства.

Реализация отображения ссылок на CSV в админке

Чтобы быстро получить доступ к актуальным CSV-результатам, добавим специальную страницу в меню админки WordPress с перечнем всех опросов и ссылками на соответствующие CSV-файлы.

add_action('admin_menu', 'wppolls_add_csv_page');

function wppolls_add_csv_page() {
    add_submenu_page(
        'tools.php',
        'Экспорт результатов WP-Polls',
        'Экспорт опросов CSV',
        'manage_options',
        'wppolls-csv-export',
        'wppolls_render_csv_export_page'
    );
}

function wppolls_render_csv_export_page() {
    global $wpdb;
    $polls_table = $wpdb->prefix . 'pollsq';
    $polls = $wpdb->get_results("SELECT pollq_id, pollq_question FROM $polls_table");
    $upload_dir = wp_upload_dir();
    $base_url = $upload_dir['baseurl'];

    echo '<div class="wrap"><h1>Экспорт результатов WP-Polls</h1><table class="wp-list-table widefat fixed"><thead><tr><th>Опрос</th><th>CSV файл</th></tr></thead><tbody>';

    foreach ($polls as $poll) {
        $csv_url = $base_url . '/wppolls-results-poll-' . $poll->pollq_id . '.csv';
        echo '<tr><td>' . esc_html($poll->pollq_question) . '</td><td><a href="' . esc_url($csv_url) . '" target="_blank">Скачать CSV</a></td></tr>';
    }

    echo '</tbody></table></div>';
}

Теперь администратор может быстро перейти к CSV-отчетам по любому опросу и загрузить свежие данные.

Дополнительные советы и рекомендации

Оптимизация и безопасность

При работе с файлами важно учитывать права доступа. Убедитесь, что папка для загрузок защищена и к CSV-файлам не имеют доступа посторонние пользователи. В идеале — ограничить просмотр файлов только администраторам.

Для этого можно добавить проверку ролей в функции отображения ссылок и настроить .htaccess или другие серверные правила.

Расширение функционала

Если вы хотите получать результаты не только в CSV, но и в Excel, JSON или отправлять их на email, можно дополнительно интегрировать библиотеки PHP, например, PhpSpreadsheet, или использовать WP-Cron для периодической отправки отчетов.

Использование готовых профессиональных решений

Если нужен более мощный и гибкий функционал опросов с автоматическим экспортом, обратите внимание на плагин Forminator от WPSHOP. Он поддерживает экспорт в CSV из интерфейса и имеет расширенные возможности аналитики.

Итог

Мы рассмотрели, как создать в WordPress опрос с автоматическим экспортом результатов в CSV с помощью плагина WP-Polls и собственного кода. Такой подход позволит вам легко интегрировать сбор данных с последующим анализом, не прибегая к сложным внешним сервисам.

Используйте примеры кода и адаптируйте под свои задачи, чтобы сделать работу с опросами максимально удобной и эффективной.

Автоматическое удаление старых голосов в опросах WordPress: пошаговое руководство
09.06.2026
Как добавить пользовательские поля в опросы WordPress
27.11.2025
Как создать прогноз по результатам опросов в WordPress
01.01.2026
Создание опроса с оценкой и комментариями в WordPress
06.04.2026
Как создать автоматический recap итогов опросов в WordPress с примерами кода
20.03.2026