Как сделать автоматический перезапуск курса в LearnPress по расписанию

В системе LearnPress иногда возникает необходимость автоматически перезапускать курсы для пользователей по расписанию. Это может быть полезно, например, для курсов с ограниченным сроком доступа, повторяющихся тренингов или обновляемых учебных материалов. В этой статье мы рассмотрим, как реализовать автоматический перезапуск курса с помощью встроенного планировщика задач WordPress — WP-Cron, а также приведём пример кода и рекомендации по плагинам для более гибкого управления расписанием.

Что такое автоматический перезапуск курса и зачем он нужен

Автоматический перезапуск курса — это процесс сброса прогресса пользователя и повторного открытия доступа к курсу через определённый интервал времени. Такой механизм позволяет:

  • Обеспечить повторное прохождение курсов, например, для обучения новым версиям материала.
  • Автоматизировать управление сроком доступа, избавляя администратора от ручного контроля.
  • Поддерживать актуальность обучения, регулярно обновляя контент и давая пользователям возможность пересмотреть материал.

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

Использование WP-Cron для автоматического перезапуска курсов

WP-Cron — это внутренняя система планировщика задач WordPress, которая позволяет запускать функции в заданное время или с определённым интервалом. Чтобы организовать автоматический перезапуск курса, нам нужно:

  1. Создать функцию, которая будет сбрасывать прогресс пользователя по курсу.
  2. Запланировать выполнение этой функции с нужной периодичностью.

Пример функции сброса прогресса курса в LearnPress

Для начала создадим функцию learnpress_reset_course_progress, которая сбрасывает прогресс конкретного курса для всех пользователей, прошедших его ранее:

function learnpress_reset_course_progress($course_id) {
    if (empty($course_id)) {
        return;
    }
    // Получаем всех пользователей, которые проходили курс
    $user_ids = get_users(array(
        'meta_key' => '_lp_course_' . $course_id . '_status',
        'meta_value' => 'completed',
        'fields' => 'ID'
    ));
    if (empty($user_ids)) {
        return;
    }
    foreach ($user_ids as $user_id) {
        // Используем LearnPress API для сброса прогресса
        $user = learnpress_get_user($user_id);
        if ($user) {
            $user->reset_course($course_id);
        }
    }
}

В этом примере мы используем функцию learnpress_get_user для получения объекта пользователя LearnPress, а затем метод reset_course для сброса прогресса. Обратите внимание, что эти функции доступны, если LearnPress подключен и активен.

Запланируем задачу с помощью WP-Cron

Добавим задачу в планировщик, которая будет запускать перезапуск курса по расписанию. Например, ежедневно в 3 часа ночи:

function learnpress_schedule_course_reset() {
    if (!wp_next_scheduled('learnpress_daily_course_reset')) {
        wp_schedule_event(strtotime('03:00:00'), 'daily', 'learnpress_daily_course_reset');
    }
}
add_action('wp', 'learnpress_schedule_course_reset');

add_action('learnpress_daily_course_reset', 'learnpress_do_course_reset');

function learnpress_do_course_reset() {
    $course_id = 123; // ID вашего курса
    learnpress_reset_course_progress($course_id);
}

Этот код проверяет, запланирована ли уже задача learnpress_daily_course_reset, и если нет — создаёт её. Далее, при срабатывании, вызывается функция сброса прогресса для указанного курса.

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

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

  • Хранить в настройках сайта список ID курсов для сброса.
  • Добавить поддержку пользовательских интервалов WP-Cron (например, еженедельно, ежемесячно).
  • Использовать плагины для управления расписанием, например Clearfy Pro, который позволяет расширять возможности WP-Cron и оптимизировать задачи.

Пример кода для сброса прогресса по списку курсов:

function learnpress_reset_multiple_courses() {
    $course_ids = array(123, 456, 789); // Список ID курсов
    foreach ($course_ids as $course_id) {
        learnpress_reset_course_progress($course_id);
    }
}

Расписание можно задать аналогично, изменив вызов функции на learnpress_reset_multiple_courses.

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

Для удобного управления задачами WP-Cron рекомендуем обратить внимание на плагины:

  • Clearfy Pro — расширяет возможности планировщика, позволяет управлять задачами, отключать лишние события и оптимизировать сайт.
  • WP Crontrol — бесплатный плагин для просмотра и управления задачами WP-Cron из админки.

Использование таких инструментов значительно упростит отладку и настройку автоматических процессов в LearnPress.

Обработка ошибок и безопасность

При работе с автоматическими задачами важно предусмотреть обработку ошибок, чтобы случайные сбои не нарушали обучение пользователей. Рекомендуется логировать результаты выполнения задач, например:

function learnpress_do_course_reset() {
    $course_id = 123;
    try {
        learnpress_reset_course_progress($course_id);
        error_log('LearnPress: сброс курса '.$course_id.' выполнен успешно.');
    } catch (Exception $e) {
        error_log('LearnPress: ошибка при сбросе курса '.$course_id.': '.$e->getMessage());
    }
}

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

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

⭐⭐⭐⭐⭐
Как автоматизировать обновление курсов в LearnPress: практическое руководство
26.11.2025
Как создать автоматические отчёты в LearnPress с помощью WPRemark
30.03.2026
Как создать уникальные проверки в Quizle для LearnPress: практические примеры и код
20.01.2026
Как сделать отсрочку оплаты в LearnPress: пошаговое решение с примерами кода
29.12.2025
Как создать свой плагин для LearnPress: подробное руководство с примерами кода
01.11.2025
×
Quizle
Привлекайте, конвертируйте, зарабатывайте!
-15%

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

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