Как добавить очередь ожидания при регистрации в LearnPress на WordPress

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

Почему нужна очередь ожидания в LearnPress

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

Добавление очереди ожидания решает сразу несколько задач:

  • Контроль максимального количества слушателей курса.
  • Автоматическое информирование пользователей о возможности записи.
  • Управление регистрациями без ручного вмешательства администратора.

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

Как реализовать очередь ожидания с помощью кода

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

Ограничение количества регистраций

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

function learnpress_ru_limit_course_enrollment( $can_enroll, $user_id, $course_id ) {
    $max_students = 30; // Максимальное количество студентов
    $students = learnpress_get_users_by_course( $course_id ); // Получаем зарегистрированных
    if ( count( $students ) >= $max_students ) {
        return false; // Запретить регистрацию
    }
    return $can_enroll;
}
add_filter( 'learn-press/can-enroll-course', 'learnpress_ru_limit_course_enrollment', 10, 3 );

Здесь мы используем фильтр learn-press/can-enroll-course LearnPress, чтобы запретить регистрацию, если достигнут лимит.

Добавление пользователей в очередь ожидания

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

function learnpress_ru_add_to_waiting_list( $can_enroll, $user_id, $course_id ) {
    if ( ! $can_enroll ) {
        $waiting_list = get_post_meta( $course_id, '_waiting_list', true );
        if ( ! is_array( $waiting_list ) ) {
            $waiting_list = [];
        }
        if ( ! in_array( $user_id, $waiting_list ) ) {
            $waiting_list[] = $user_id;
            update_post_meta( $course_id, '_waiting_list', $waiting_list );
        }
        // Уведомление пользователя
        learnpress_ru_notify_user_waiting_list( $user_id, $course_id );
    }
}
add_action( 'learn-press/user-registration-failed', 'learnpress_ru_add_to_waiting_list', 10, 3 );

function learnpress_ru_notify_user_waiting_list( $user_id, $course_id ) {
    $user = get_userdata( $user_id );
    $course = get_post( $course_id );
    $to = $user->user_email;
    $subject = 'Вы добавлены в очередь ожидания курса "' . $course->post_title . '"';
    $message = 'Здравствуйте, вы добавлены в очередь ожидания на курс "' . $course->post_title . '". Мы уведомим вас, как только появится свободное место.';
    wp_mail( $to, $subject, $message );
}

Обратите внимание, что хук learn-press/user-registration-failed используется условно, в зависимости от реализации LearnPress. Если такого нет, можно заменить на обработку соответствующего события регистрации.

Автоматическое уведомление из очереди при появлении свободного места

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

Обработка отмены регистрации

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

function learnpress_ru_process_waiting_list_on_unenroll( $user_id, $course_id ) {
    $waiting_list = get_post_meta( $course_id, '_waiting_list', true );
    if ( is_array( $waiting_list ) && ! empty( $waiting_list ) ) {
        $next_user_id = array_shift( $waiting_list );
        update_post_meta( $course_id, '_waiting_list', $waiting_list );

        // Автоматическая регистрация пользователя
        learn_press_enroll_user( $next_user_id, $course_id );

        // Отправка уведомления
        $user = get_userdata( $next_user_id );
        $course = get_post( $course_id );
        $to = $user->user_email;
        $subject = 'Свободное место в курсе "' . $course->post_title . '"';
        $message = 'Здравствуйте, для вас открылось свободное место в курсе "' . $course->post_title . '". Вы успешно зарегистрированы.';
        wp_mail( $to, $subject, $message );
    }
}
add_action( 'learn-press/user-unenrolled-course', 'learnpress_ru_process_waiting_list_on_unenroll', 10, 2 );

Здесь хук learn-press/user-unenrolled-course вызывается при отмене регистрации, если такого нет — потребуется подключать обработку вручную при удалении.

Рекомендации по плагинам для очереди ожидания в LearnPress

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

  • WPRestrict — плагин для ограничений доступа, который можно адаптировать под лимиты регистрации и очередь.
  • Expert Review — позволяет добавлять отзывы и отзывы можно использовать для определения приоритетов в очереди.

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

Выводы и советы по внедрению

Добавление очереди ожидания в LearnPress требует понимания логики регистрации и уведомлений. Ключевые моменты:

  • Чётко определяйте лимит слушателей курса.
  • Храните очередь в метаполях или отдельной таблице для удобства управления.
  • Используйте стандартные хуки LearnPress или создайте свои для обработки событий регистрации и отмены.
  • Обязательно уведомляйте пользователей о статусе их регистрации и очереди.
  • Тестируйте систему при разных сценариях, чтобы избежать блокировок и ошибок.

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

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

⭐⭐⭐⭐⭐
Как добавить уникальный фильтр по статусу заявки в LearnPress
12.04.2026
Как запретить регистрацию учащихся с одинаковым email в LearnPress
12.01.2026
Как решить проблему необновления статуса сохранённого заказа WooCommerce в LearnPress
28.04.2026
Как сделать автоматический перезапуск курса в LearnPress по расписанию
11.03.2026
Как добавить разделы в курсах LearnPress: практическое руководство с примерами кода
10.02.2026
×
Quizle
Привлекайте, конвертируйте, зарабатывайте!
-15%

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

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