Как добавить и синхронизировать кастомные статусы заказов WooCommerce с LearnPress

Диагностика проблемы: почему стандартных статусов WooCommerce недостаточно для LearnPress

LearnPress тесно интегрирован с WooCommerce для управления оплатами и доступом к курсам. Однако стандартный набор статусов заказов WooCommerce, таких как pending, processing и completed, не всегда покрывает специфические сценарии, например, дополнительные проверки платежей, ручное подтверждение или статус возврата. Без поддержки кастомных статусов LearnPress не обновляет доступ к курсам должным образом, что приводит к ошибкам в выдаче контента.

Как проверить текущие статусы заказов WooCommerce и их обработку LearnPress

  • В админке WooCommerce перейдите в «Заказы» и посмотрите список заказов с разными статусами.
  • Проверьте, какие статусы отражаются в LearnPress в разделе «Студенты» и «Курсы».
  • Если после смены статуса заказа доступ к курсу не меняется, значит LearnPress не связал кастомный статус.

Пошаговое решение: добавление кастомных статусов заказов и их синхронизация с LearnPress

1. Регистрируем кастомный статус заказа WooCommerce

Добавьте следующий код в файл functions.php вашей темы или в кастомный плагин:

function lp_register_custom_order_statuses() {
    register_post_status( 'wc-awaiting-approval', array(
        'label'                     => 'Ожидает одобрения',
        'public'                    => true,
        'exclude_from_search'       => false,
        'show_in_admin_all_list'    => true,
        'show_in_admin_status_list' => true,
        'label_count'               => _n_noop( 'Ожидает одобрения <span class="count">(%s)</span>', 'Ожидает одобрения <span class="count">(%s)</span>' ),
    ) );
}
add_action( 'init', 'lp_register_custom_order_statuses' );

function lp_add_custom_order_statuses_to_wc( $order_statuses ) {
    $order_statuses['wc-awaiting-approval'] = 'Ожидает одобрения';
    return $order_statuses;
}
add_filter( 'wc_order_statuses', 'lp_add_custom_order_statuses_to_wc' );

2. Связываем кастомный статус с LearnPress

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

function lp_sync_custom_order_status_with_learnpress( $order_id, $old_status, $new_status ) {
    if ( $new_status === 'awaiting-approval' ) {
        // Можно отправить уведомление администратору или инициировать ручную проверку
    }
    // При смене на completed или другие статусы - стандартная обработка
}
add_action( 'woocommerce_order_status_changed', 'lp_sync_custom_order_status_with_learnpress', 10, 3 );

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

Проверка результата: как убедиться, что кастомные статусы работают корректно

  • Создайте тестовый заказ в WooCommerce и установите кастомный статус «Ожидает одобрения».
  • Проверьте, что в админке WooCommerce этот статус отображается и доступен для выбора.
  • Убедитесь, что LearnPress не предоставляет доступ к курсам при этом статусе (если это ваша логика).
  • При смене статуса с кастомного на completed проверьте, что доступ к курсу появляется у пользователя.
  • Отследите логи ошибок, если используется WP_DEBUG, чтобы убедиться, что обработчик статусов без ошибок.

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

  • Кастомный статус не отображается в списке заказов WooCommerce: Проверьте регистрацию статуса и фильтр wc_order_statuses. Ошибка в ключе статуса (нужно начинать с wc-).
  • LearnPress не реагирует на смену кастомного статуса: Убедитесь, что вы используете правильный хук woocommerce_order_status_changed и в обработчике вызываете нужные методы LearnPress для обновления доступа.
  • Пользователь получает доступ к курсу при неподходящем статусе: Проверьте логику проверки статуса в LearnPress. Возможно, нужно расширить фильтры learn_press_order_status_completed.

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

  • Не вставляйте тяжелую логику в обработчики смены статуса – лучше отправлять задачи в очередь с помощью WP-Cron или Action Scheduler.
  • Для уведомлений используйте асинхронную отправку, чтобы не замедлять процесс обновления статусов.
  • Регулярно проверяйте логи ошибок и отладочную информацию при внедрении кастомных статусов.
  • Избегайте прямого изменения базы данных WooCommerce и LearnPress – используйте API и хуки.

Сравнение подходов для кастомных статусов WooCommerce и LearnPress

МетодОписаниеПлюсыМинусы
Регистрация кастомного статуса + слушатель смены статусаСтандартный способ расширения WooCommerce и LearnPressПолный контроль, официальная поддержка, интеграцияТребует навыков PHP, тестирования
Использование плагинов для кастомных статусовПлагины типа "WooCommerce Order Status Manager"Быстрое добавление без кодаМожет конфликтовать с LearnPress, ограниченная кастомизация
Прямое изменение метаданных заказаХранение кастомной информации вручнуюПростота реализацииНет поддержки в UI, нестабильность, риск синхронизации

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

⭐⭐⭐⭐⭐
Как оптимизировать производительность WordPress для обучающих платформ LearnPress
18.11.2025
Как создать автоматические отчёты в LearnPress с помощью WPRemark
30.03.2026
Как настроить автозаполнение поля оплаты WooCommerce для LearnPress
27.05.2026
Как создать уникальные проверки в Quizle для LearnPress: практические примеры и код
20.01.2026
Как добавить авторизацию по OTP в LearnPress с применением WooCommerce
24.05.2026
×
Сделай свой сайт крутым!

Скидка -20% на премиум плагины WordPress

Выбрать плагин сейчас ⋙