LearnPress — один из самых популярных плагинов для создания онлайн-курсов на WordPress. Для разработчиков и администраторов важна возможность автоматизировать процессы и интегрировать LearnPress с внешними системами, например, CRM, LMS или аналитическими платформами. Для этого LearnPress предоставляет REST API, который позволяет работать с курсами, уроками, пользователями и заказами через HTTP-запросы.
Что такое REST API в LearnPress и зачем он нужен
REST API (Representational State Transfer Application Programming Interface) — это стандартный способ взаимодействия с данными сайта через HTTP. В LearnPress REST API открывает доступ к основным сущностям LMS: курсам, урокам, заданиям, студентам, заказам и прочему.
Использование REST API позволяет:
- Автоматизировать создание и обновление курсов и уроков без захода в админку.
- Интегрировать LearnPress с внешними сервисами (CRM, email-рассылки, аналитика).
- Создавать кастомные мобильные приложения и фронтенды, использующие данные LearnPress.
- Собирать статистику и отчеты по обучению в реальном времени.
Таким образом, REST API расширяет возможности LearnPress вне рамок WordPress и открывает новые сценарии использования.
Как включить и настроить REST API в LearnPress
По умолчанию REST API в LearnPress доступен, но для работы с защищенными эндпоинтами требуется авторизация. Для начала убедитесь, что на вашем сайте включен REST API WordPress (он включен по умолчанию с версии 4.7).
Для авторизации рекомендуется использовать OAuth, JWT или базовую авторизацию с помощью Application Passwords, которые появились в WordPress 5.6.
Пример настройки базовой авторизации через Application Password
1. В админке WordPress зайдите в профиль пользователя, под которым будете делать запросы.
2. Найдите раздел Application Passwords и создайте новый пароль для API.
3. При отправке запросов используйте базовую авторизацию с логином пользователя и сгенерированным паролем.
Основные эндпоинты REST API LearnPress
LearnPress расширяет стандартный WP REST API своими маршрутами. Ниже перечислены основные из них:
GET /wp-json/learnpress/v1/courses— получить список курсов.GET /wp-json/learnpress/v1/courses/{id}— получить данные конкретного курса.POST /wp-json/learnpress/v1/courses— создать новый курс (требуется авторизация).PUT /wp-json/learnpress/v1/courses/{id}— обновить курс.DELETE /wp-json/learnpress/v1/courses/{id}— удалить курс.GET /wp-json/learnpress/v1/users— получить список пользователей LearnPress.GET /wp-json/learnpress/v1/orders— получить список заказов.
Эндпоинты покрывают основные сущности системы, что позволяет управлять всем процессом обучения и продаж через API.
Примеры использования REST API LearnPress на PHP
Рассмотрим пример простого скрипта на PHP, который создаёт новый курс через REST API LearnPress.
<?php
$site_url = 'https://your-site.ru';
$username = 'admin';
$app_password = 'generated-application-password';
$data = [
'title' => 'Новый курс через API',
'content' => 'Описание курса, созданного через REST API',
'status' => 'publish',
'price' => 1990
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $site_url . '/wp-json/learnpress/v1/courses');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERPWD, $username . ':' . $app_password);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
$response = curl_exec($ch);
if(curl_errno($ch)) {
echo 'Ошибка запроса: ' . curl_error($ch);
} else {
$result = json_decode($response, true);
print_r($result);
}
curl_close($ch);
?>В этом примере происходит авторизация через базовую аутентификацию с Application Password и отправляется POST-запрос на создание курса с нужными параметрами.
Как программно получить список курсов и фильтровать их
Для получения списка курсов с фильтрацией по цене, категории или статусу используйте GET-запрос с параметрами. Например, получить опубликованные курсы по цене ниже 3000 рублей:
GET /wp-json/learnpress/v1/courses?price_max=3000&status=publishПример запроса на PHP с фильтрацией по категории:
<?php
$category_slug = 'web-design';
$response = wp_remote_get($site_url . '/wp-json/learnpress/v1/courses?category=' . $category_slug);
if (is_wp_error($response)) {
echo 'Ошибка запроса';
} else {
$courses = json_decode(wp_remote_retrieve_body($response), true);
foreach ($courses as $course) {
echo 'Курс: ' . $course['title'] . "\n";
}
}
?>Расширение REST API LearnPress своими эндпоинтами
Если стандартных API недостаточно, можно добавить свои маршруты. Для этого используйте хук rest_api_init и функцию register_rest_route. Ниже пример создания эндпоинта, возвращающего количество учеников на курсе.
add_action('rest_api_init', function () {
register_rest_route('learnpress/v1', '/course-students/(?P<id>\d+)', [
'methods' => 'GET',
'callback' => 'learnpress_get_course_students_count',
'permission_callback' => function () {
return current_user_can('read');
}
]);
});
function learnpress_get_course_students_count($request) {
$course_id = $request['id'];
$students = learnpress_get_enrolled_users($course_id); // Встроенная функция LearnPress
return ['course_id' => $course_id, 'students_count' => count($students)];
}
Такой подход позволяет создавать кастомные API для интеграции под специфические задачи и сервисы.
Полезные плагины для работы с REST API в LearnPress и WordPress
Для удобства разработки и тестирования REST API рекомендуем использовать следующие плагины:
- WP REST API Controller — позволяет управлять доступом к полям и эндпоинтам API через админку.
- JWT Authentication for WP REST API — добавляет поддержку JWT авторизации для безопасного доступа.
- Postman (внешний инструмент) — удобный клиент для тестирования и отладки API-запросов.
Для расширения функционала LearnPress с помощью REST API эти инструменты значительно облегчат вашу работу.