Как добавить авторизацию по OTP в LearnPress с применением WooCommerce

Диагностика задачи: зачем нужна авторизация по OTP в LearnPress

LearnPress — мощный LMS-плагин для WordPress, но штатно не поддерживает авторизацию по одноразовому паролю (OTP). В современных реалиях OTP повышает безопасность и удобство входа для пользователей, особенно в мобильных приложениях и при работе с WooCommerce, где оплата и регистрация тесно связаны.

Реализация OTP требуется, если у вас есть ученики, которые хотят входить на сайт без пароля или с дополнительной защитой, либо вы хотите интегрировать единый процесс авторизации для LearnPress и WooCommerce.

Основные шаги реализации авторизации по OTP для LearnPress с WooCommerce

1. Подключение плагина для OTP авторизации

Для начала необходимо установить плагин, который поддерживает OTP для WordPress. Рекомендуемые варианты:

  • OTP Verification — бесплатный плагин с поддержкой SMS и Email OTP.
  • WP SMS Verification — платный, с расширенными возможностями интеграции.

Выбор зависит от бюджета и требований к каналу доставки OTP.

2. Интеграция с WooCommerce

WooCommerce поддерживает расширения, добавляющие OTP на страницу входа/регистрации. Чтобы синхронизировать процесс с LearnPress:

  • Активируйте OTP на страницах WooCommerce (вход и регистрация).
  • Убедитесь, что LearnPress использует стандартные страницы WooCommerce для регистрации и входа, либо перенаправляйте пользователей на них.

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

3. Кастомизация форм LearnPress для вызова OTP

LearnPress по умолчанию использует свои страницы регистрации и входа. Чтобы добавить туда OTP:

  1. Подключите хук learn-press/user-login-form для добавления поля ввода OTP.
  2. Добавьте JavaScript для запроса OTP через AJAX.
  3. Обработайте в PHP проверку OTP при авторизации.
add_action('learn-press/user-login-form', function() {
    echo '<label for="otp_code">Введите OTP</label>';
    echo '<input type="text" id="otp_code" name="otp_code" required />';
});

add_action('wp_ajax_verify_otp', 'verify_otp_callback');
add_action('wp_ajax_nopriv_verify_otp', 'verify_otp_callback');
function verify_otp_callback() {
    $otp = sanitize_text_field($_POST['otp']);
    // Здесь логика проверки OTP, например, сессия или запрос в базу
    if ($otp === $_SESSION['generated_otp']) {
        wp_send_json_success();
    } else {
        wp_send_json_error('Неверный OTP');
    }
    wp_die();
}

4. Синхронизация статусов пользователей между LearnPress и WooCommerce

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

  • Используйте хук woocommerce_order_status_completed для обновления статуса пользователя в LearnPress.
  • Пример кода для добавления курса после оплаты:
add_action('woocommerce_order_status_completed', 'lp_enroll_user_after_payment', 10, 1);
function lp_enroll_user_after_payment($order_id) {
    $order = wc_get_order($order_id);
    $user_id = $order->get_user_id();
    foreach ($order->get_items() as $item) {
        $product_id = $item->get_product_id();
        $course_id = get_post_meta($product_id, '_lp_course', true); // Связь товара и курса
        if ($course_id) {
            learn_press_enroll_student($course_id, $user_id);
        }
    }
}

Проверка результата после внедрения

  • Зарегистрируйтесь как новый пользователь через форму регистрации LearnPress — должен запрашиваться и проверяться OTP.
  • Войдите через страницу входа LearnPress, подтвердите OTP.
  • Оформите заказ на курс через WooCommerce, проверьте, что после оплаты курс автоматически становится доступен.
  • Проверьте, что без правильного OTP вход невозможен.

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

  • OTP не отправляется или не приходит: проверьте настройки SMS/Email сервиса и логирование ошибок плагина OTP.
  • LearnPress игнорирует поля OTP: убедитесь, что добавленный код обработки формы правильно подключен и не конфликтует с другими плагинами.
  • Статус курса не обновляется после оплаты: проверьте правильность связи между товаром WooCommerce и курсом LearnPress (мета _lp_course) и корректность хука.
  • Конфликты JavaScript: проверьте консоль браузера, отключите другие скрипты для диагностики.

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

  • Храните OTP во временных сессиях или в базе с таймаутом не более 5 минут.
  • Ограничьте число попыток ввода OTP для предотвращения перебора.
  • Используйте асинхронную отправку OTP через AJAX, чтобы не блокировать интерфейс.
  • Для SMS используйте проверенные сервисы с высокой доставляемостью.
  • Кеширование страниц с формами входа и регистрации отключите, чтобы не мешать динамической проверке OTP.

Сравнение вариантов реализации OTP в LearnPress

ВариантПлюсыМинусы
Использование готового плагина OTP для WordPressБыстрое развертывание, поддержка SMS и EmailМожет не поддерживать кастомизацию LearnPress без доработки
Кастомная интеграция через хуки LearnPress и WooCommerceМаксимальный контроль, гибкостьТребует навыков разработки, дольше по времени
Комбинация плагина + кастомный код для LearnPressБаланс скорости и кастомизацииНеобходимость поддержки двух систем

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

⭐⭐⭐⭐⭐
Решение проблемы с несоответствием цен в LearnPress и WooCommerce
18.04.2026
Как сделать отсрочку просмотра уроков в LearnPress: практическое решение
18.03.2026
Решение проблемы необновления статусов возврата платежа WooCommerce в LearnPress
12.05.2026
Как добавить уникальный фильтр по статусу заявки в LearnPress
12.04.2026
Как добавить авторизацию по OTP в LearnPress с применением WooCommerce
24.05.2026
×
Quizle
Привлекайте, конвертируйте, зарабатывайте!
-15%

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

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