Диагностика проблемы: курс не отображается после оплаты
Одна из частых проблем при интеграции LearnPress и WooCommerce — пользователь успешно оплачивает курс, но курс не появляется в личном кабинете, и доступ к урокам не открывается. Это обычно связано с несинхронизацией статусов заказа WooCommerce и LearnPress.
Для начала нужно проверить несколько моментов:
- Статус заказа в WooCommerce после оплаты (должен быть
completedилиprocessing). - Обновляется ли статус курса у пользователя в LearnPress (доступен в базе данных в таблице
wp_learnpress_user_items). - Отсутствуют ли ошибки в логах WooCommerce и LearnPress.
Как проверить статус заказа в WooCommerce
В админке WordPress перейдите в WooCommerce > Заказы, найдите нужный заказ и убедитесь, что он имеет статус processing или completed. Если статус остается pending или on-hold, LearnPress не активирует курс.
Проверка присвоения курса пользователю
Используйте SQL-запрос для проверки, есть ли запись о назначении курса пользователю (ID пользователя и ID курса подставьте свои):
SELECT * FROM wp_learnpress_user_items WHERE user_id = 123 AND item_id = 456;Если запись отсутствует, значит LearnPress не получил сигнал о завершении оплаты.
Пошаговое решение проблемы синхронизации WooCommerce и LearnPress
- Проверьте правильность настроек WooCommerce: Убедитесь, что платежный шлюз корректно меняет статус заказа на
processingилиcompletedпосле успешной оплаты. - Убедитесь, что LearnPress WooCommerce Integration активна: В разделе плагинов проверьте, что LearnPress WooCommerce Integration установлен и активен.
- Добавьте кастомный код для принудительного обновления статуса курса: Иногда стандартная интеграция не срабатывает из-за конфликтов. Добавьте следующий код в файл
functions.phpдочерней темы или в плагин-сниппет:
add_action('woocommerce_order_status_completed', 'lp_sync_course_on_order_completed', 10, 1);
function lp_sync_course_on_order_completed($order_id) {
if (!$order_id) return;
$order = wc_get_order($order_id);
foreach ($order->get_items() as $item) {
$product_id = $item->get_product_id();
// Получаем ID курса, связанного с товаром LearnPress
$course_id = get_post_meta($product_id, '_lp_course', true);
if ($course_id) {
$user_id = $order->get_user_id();
if ($user_id) {
// Записываем курс за пользователем
learn_press_enroll_user($user_id, $course_id);
}
}
}
}Этот хук срабатывает при смене статуса заказа на completed и вручную записывает пользователя на курс, связанный с товаром WooCommerce.
- Проверьте, что товары WooCommerce связаны с курсами LearnPress: В настройках продукта WooCommerce должно быть поле
_lp_courseс ID курса для корректной работы кода. - Очистите кэш сайта и браузера. Иногда кэширование мешает обновлению данных в личном кабинете.
Проверка результата после внедрения решения
- Создайте тестовый заказ в WooCommerce, оплатите его тестовым платежом.
- Перейдите в профиль пользователя и убедитесь, что курс отображается в разделе «Мои курсы» LearnPress.
- Проверьте в базе данных наличие записи в
wp_learnpress_user_itemsдля пользователя и курса. - Убедитесь, что статус заказа в WooCommerce —
completedилиprocessing.
Частые ошибки и способы их исправления
- Отсутствие связи товара и курса: Не установлен мета-ключ
_lp_courseу товара WooCommerce. Решение — добавить этот мета-ключ с ID курса. - Платежный шлюз не меняет статус заказа: Проверьте настройки шлюза, у некоторых методов оплаты статус по умолчанию остается
pending. - Код не срабатывает из-за кеша: Очистите кеш сайта, плагинов кэширования и CDN.
- Конфликты с другими плагинами: Отключите сторонние плагины, влияющие на WooCommerce или LearnPress, и проверьте работу.
Практические советы по безопасности и производительности
- Не изменяйте напрямую файлы плагинов LearnPress или WooCommerce — используйте дочерние темы или отдельные плагины для кастомного кода.
- Используйте транзакции и проверки в коде при работе с базой данных, чтобы избежать дублирующих записей.
- Регулярно обновляйте LearnPress и WooCommerce, чтобы использовать последние исправления интеграции.
- Для сайтов с большим трафиком используйте плагин Clearfy Pro от WPShop для оптимизации и очистки базы данных, что улучшит скорость и стабильность работы.
Таблица сравнения способов интеграции курса и заказа WooCommerce
| Способ | Плюсы | Минусы | Рекомендации |
|---|---|---|---|
| Стандартная интеграция LearnPress WooCommerce | Простая настройка, автоматическое обновление статуса | Редкие сбои при нестандартных платежных шлюзах | Использовать при стандартных платежах |
| Кастомный хук на статус заказа | Гибкость, исправляет сбои | Требует поддержки и контроля | Рекомендуется для сложных конфигураций |
| Использование сторонних плагинов интеграции | Расширенный функционал | Зависимость от сторонних разработчиков | Оценивать совместимость с текущей версией WordPress |