wpforms.ru wordpress WPForms.ru

Как автоматизировать сохранение ответов и экспорт данных в CSV

Диагностика задачи: почему нужен автоматический экспорт данных из WPForms

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

  • Экономить время на сбор данных;
  • Интегрировать ответы с внешними системами;
  • Обеспечить регулярное резервное копирование;
  • Упростить анализ данных в Excel или BI-системах.

Задача: настроить автоматическое сохранение ответов WPForms и их периодический экспорт в CSV с отправкой на email или сохранением на сервер.

Как WPForms хранит данные форм

Данные WPForms сохраняются в таблицах базы WordPress: wp_wpforms_entries (основные записи) и wp_wpforms_entry_fields (значения полей). Для экспорта нужно собрать данные из этих таблиц, сопоставив их с формой.

Основные таблицы:

  • wp_wpforms_entries — записи каждой отправки;
  • wp_wpforms_entry_fields — поля с ответами по каждой записи;
  • wp_posts — форма хранится как кастомный тип записи wpforms.

Пошаговое решение: автоматический экспорт данных формы WPForms в CSV

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

Пример кода для экспорта данных конкретной формы (ID = 123) в CSV:

function wpforms_export_to_csv($form_id = 123) {
    global $wpdb;
    $entries_table = $wpdb->prefix . 'wpforms_entries';
    $fields_table = $wpdb->prefix . 'wpforms_entry_fields';

    // Получаем записи формы
    $entries = $wpdb->get_results($wpdb->prepare(
        "SELECT id, date FROM $entries_table WHERE form_id = %d ORDER BY date DESC",
        $form_id
    ));

    if(empty($entries)) {
        return false; // Нет данных для экспорта
    }

    // Получаем все поля формы, чтобы заголовки CSV были понятны
    $form_fields = wpforms()->form->get($form_id)->fields;

    // Заголовок CSV
    $csv = [];
    $header = ['Entry ID', 'Date'];
    foreach ($form_fields as $field) {
        $header[] = $field['label'];
    }
    $csv[] = $header;

    foreach ($entries as $entry) {
        $row = [$entry->id, $entry->date];
        foreach ($form_fields as $field) {
            $field_value = $wpdb->get_var($wpdb->prepare(
                "SELECT value FROM $fields_table WHERE entry_id = %d AND field_id = %d",
                $entry->id, $field['id']
            ));
            $row[] = $field_value;
        }
        $csv[] = $row;
    }

    // Формируем CSV строку
    $output = '';
    foreach ($csv as $line) {
        $escaped = array_map(function($item) {
            $item = str_replace('"', '""', $item);
            return '"' . $item . '"';
        }, $line);
        $output .= implode(',', $escaped) . "\n";
    }

    return $output;
}

2. Отправка CSV на Email или сохранение на диск

Пример отправки по email с вложением:

function wpforms_send_csv_email() {
    $csv_content = wpforms_export_to_csv(123); // ID вашей формы
    if(!$csv_content) {
        return;
    }

    $upload_dir = wp_upload_dir();
    $file_path = $upload_dir['basedir'] . '/wpforms_export.csv';
    file_put_contents($file_path, $csv_content);

    $to = 'admin@example.com';
    $subject = 'Экспорт ответов WPForms';
    $message = 'В приложении файл с последними ответами формы.';
    $headers = ['Content-Type: text/html; charset=UTF-8'];
    $attachments = [$file_path];

    wp_mail($to, $subject, $message, $headers, $attachments);

    // Опционально удаляем файл после отправки
    unlink($file_path);
}
// Можно запускать по крону или вручную
add_action('wpforms_cron_export_csv', 'wpforms_send_csv_email');

3. Настройка планировщика (wp-cron) для регулярного экспорта

Добавьте хук для автоматического запуска, например, раз в сутки:

if ( ! wp_next_scheduled( 'wpforms_cron_export_csv' ) ) {
    wp_schedule_event( time(), 'daily', 'wpforms_cron_export_csv' );
}

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

Чтобы убедиться, что экспорт работает:

  • Запустите функцию вручную в админке или через WP-CLI;
  • Проверьте, что email с CSV приходит на указанный адрес;
  • Откройте CSV, убедитесь, что все поля и записи корректно выгружены;
  • Проверьте логи ошибок сервера на предмет ошибок при работе крона или wp_mail.

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

  • Пустой CSV или нет данных: Проверьте правильность ID формы и наличие записей в базе.
  • Ошибка прав доступа к папке uploads: Убедитесь, что PHP может писать в wp-content/uploads.
  • Письма не отправляются: Проверьте настройки SMTP WordPress, убедитесь, что wp_mail работает через плагин типа WP Mail SMTP.
  • Крон не срабатывает: Проверьте, активен ли WP-Cron, или используйте системный cron для вызова wp-cron.php.

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

  • Для больших форм и объёмов данных используйте постраничную загрузку записей, чтобы избежать превышения лимитов памяти и времени выполнения.
  • Ограничьте доступ к функции экспорта через capability или проверку прав пользователя.
  • Храните CSV во временной папке и удаляйте после отправки, чтобы не занимать место.
  • Для надежной отправки писем используйте SMTP-плагины.

Чек-лист для внедрения автоматического экспорта WPForms в CSV

  1. Определить ID формы для экспорта.
  2. Реализовать функцию сбора данных из базы и генерации CSV.
  3. Добавить функцию отправки CSV по email или сохранения на сервер.
  4. Настроить wp-cron для регулярного запуска экспорта.
  5. Проверить работу ручным запуском и убедиться в корректности данных.
  6. Проанализировать логи и исправить возникающие ошибки.
  7. Обеспечить безопасность и права доступа к функциям экспорта.

Сравнение способов экспорта данных из WPForms

МетодОписаниеПлюсыМинусы
Ручной экспорт из WPForms (админка) Выгрузка CSV через интерфейс плагина Простота, не требует кода Неудобно при большом объеме и регулярном использовании
Автоматический экспорт через PHP и wp-cron Скрипт собирает данные и отправляет отчет Гибкость, автоматизация, интеграция с другими системами Требует навыков программирования, настройки cron
Использование сторонних плагинов экспорта Плагины для экспорта и интеграции с CRM/BI Быстрое решение без программирования Может быть дорого, ограничена кастомизация
×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше