Как создать автоматические экспорты отчетов в LearnPress на WordPress

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

Почему важен автоматический экспорт отчетов LearnPress

LearnPress предоставляет встроенные отчеты, но выгрузка данных обычно происходит вручную через админку. Если у вас большой поток пользователей и активных курсов, ручной экспорт становится неудобным и затратным по времени.

Автоматизация экспорта позволяет:

  • Регулярно получать актуальные отчеты без вашего участия.
  • Интегрировать данные LearnPress с внешними системами аналитики и CRM.
  • Экономить время и избегать человеческих ошибок при выгрузке.

Рассмотрим поэтапно, как организовать такой процесс с помощью кастомного плагина и нескольких библиотек.

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

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

Шаг 1. Регистрация cron задачи в WordPress

Добавим в плагин функцию, которая будет запускаться раз в сутки и создавать отчет.

function learnpress_autoexport_schedule() {
    if ( ! wp_next_scheduled( 'learnpress_autoexport_daily_event' ) ) {
        wp_schedule_event( time(), 'daily', 'learnpress_autoexport_daily_event' );
    }
}
add_action( 'wp', 'learnpress_autoexport_schedule' );

Эта функция запускает cron событие 'learnpress_autoexport_daily_event' ежедневно.

Шаг 2. Обработка события и генерация отчета

Создаем обработчик события, который собирает данные из LearnPress и сохраняет их в CSV файл.

add_action( 'learnpress_autoexport_daily_event', 'learnpress_generate_report' );

function learnpress_generate_report() {
    // Получим всех студентов
    $users = get_users( array( 'role' => 'lp_student' ) );

    // Подготовим заголовки CSV
    $csv_data = [];
    $csv_data[] = [ 'ID', 'Имя', 'Email', 'Количество курсов', 'Прогресс в %' ];

    foreach ( $users as $user ) {
        $user_id = $user->ID;
        $courses = learnpress_get_user_courses( $user_id ); // Функция LearnPress
        $courses_count = count( $courses );

        // Рассчитаем средний прогресс по всем курсам
        $progress_sum = 0;
        foreach ( $courses as $course_id ) {
            $progress_sum += learnpress_get_user_course_progress( $user_id, $course_id );
        }
        $average_progress = $courses_count ? round( $progress_sum / $courses_count, 2 ) : 0;

        $csv_data[] = [ $user_id, $user->display_name, $user->user_email, $courses_count, $average_progress ];
    }

    $upload_dir = wp_upload_dir();
    $file_name = 'learnpress_report_' . date( 'Y-m-d' ) . '.csv';
    $file_path = $upload_dir['basedir'] . '/' . $file_name;

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

// Вспомогательные функции LearnPress
function learnpress_get_user_courses( $user_id ) {
    if ( ! class_exists( 'LP_User' ) ) return [];
    $lp_user = LP_User::get_user( $user_id );
    $courses = $lp_user ? $lp_user->get_courses( 'enrolled' ) : [];
    return is_array( $courses ) ? $courses : [];
}

function learnpress_get_user_course_progress( $user_id, $course_id ) {
    if ( ! class_exists( 'LP_User' ) ) return 0;
    $lp_user = LP_User::get_user( $user_id );
    if ( ! $lp_user ) return 0;
    return $lp_user->get_course_data( $course_id )['percent'] ?? 0;
}

Этот код формирует CSV с данными по каждому студенту: ID, имя, email, количество курсов и средний прогресс.

Автоматическая отправка отчетов на email

Чтобы получать отчеты на почту, добавим функцию отправки письма после генерации файла.

function learnpress_send_report_email( $file_path ) {
    $to = get_option( 'admin_email' );
    $subject = 'Ежедневный отчет LearnPress ' . date( 'Y-m-d' );
    $message = 'В приложении отчет по активности студентов LearnPress.';

    $headers = [ 'Content-Type: text/html; charset=UTF-8' ];

    $attachments = [ $file_path ];

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

И вызовем эту функцию в конце learnpress_generate_report:

learnpress_send_report_email( $file_path );

Расширение функционала: форматы и фильтрация данных

Вы можете расширить плагин, добавив:

  • Выгрузку в Excel через библиотеки PHPExcel или PhpSpreadsheet.
  • Фильтрацию отчетов по дате регистрации или активности.
  • Выгрузку отдельных отчетов по курсам или группам пользователей.

Для примера, если хотите использовать Excel формат, добавьте в composer или вручную библиотеку PhpSpreadsheet и замените код записи файла.

Пример использования PhpSpreadsheet для экспорта в Excel

use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

function learnpress_generate_excel_report() {
    $spreadsheet = new Spreadsheet();
    $sheet = $spreadsheet->getActiveSheet();

    $sheet->fromArray([
        ['ID', 'Имя', 'Email', 'Количество курсов', 'Прогресс в %'],
        // Данные ниже
    ], NULL, 'A1');

    // Добавьте строки с данными аналогично

    $upload_dir = wp_upload_dir();
    $file_path = $upload_dir['basedir'] . '/learnpress_report_' . date('Y-m-d') . '.xlsx';

    $writer = new Xlsx($spreadsheet);
    $writer->save($file_path);

    learnpress_send_report_email($file_path);
}

Заключение

Автоматический экспорт отчетов LearnPress помогает оптимизировать управление обучающей платформой, экономит время и позволяет быстрее реагировать на потребности студентов. Настройка cron задач и выгрузка данных в удобном формате — отличный способ держать руку на пульсе.

Если нужна дополнительная помощь с интеграцией или расширением функционала, рекомендуем обратить внимание на плагины из WPShop, которые могут облегчить задачи автоматизации и отчетности.

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
Как добавить авторизацию через социальные сети в LearnPress на WordPress
08.05.2026
Как добавить платежные системы в LearnPress для приема оплат на сайте
08.03.2026
Как создать автоответы в LearnPress для автоматизации обратной связи
29.11.2025
Как добавить виджет новостей в LearnPress: пошаговое руководство с примерами кода
13.12.2025
Как создать уникальные проверки в Quizle для LearnPress: практические примеры и код
20.01.2026
×
Quizle
Привлекайте, конвертируйте, зарабатывайте!
-15%

на премиум плагин WordPress

Получить скидку ⋙