LearnPress — один из самых популярных плагинов для создания обучающих платформ на WordPress. В реальных проектах часто возникает необходимость синхронизации данных LearnPress с внешними системами: CRM, ERP, рассылками, аналитикой и другими сервисами. В этой статье мы разберём несколько рабочих подходов и приведём примеры кода, которые помогут вам настроить двустороннюю интеграцию LearnPress с внешними сервисами.
Почему нужна синхронизация LearnPress с внешними системами
Учебная платформа — это не просто сайт с курсами, а часть комплексного бизнес-процесса, в котором учёба тесно связана с продажами, поддержкой и аналитикой. Например, интеграция с CRM позволит автоматически передавать данные о новых студентах, их оплатах и статусах курсов, чтобы менеджеры могли быстро реагировать и выстраивать коммуникацию.
Другой пример — рассылочные сервисы, куда нужно передавать контакты учащихся для отправки персонализированных писем, акций и напоминаний. Аналитика поможет понять эффективность курсов и поведение пользователей.
Без автоматизации такие задачи требуют ручного ввода и дублирования данных, что ведёт к ошибкам и потерям клиентов.
Основные способы синхронизации LearnPress
1. Использование вебхуков (hooks) LearnPress для отправки данных
LearnPress предлагает множество хуков (actions и filters), которые вызываются при регистрации пользователя, покупке курса, изменении статуса заказа и других событиях. Используя их, вы можете отправлять данные в API внешних систем в момент возникновения события.
Пример: после успешной оплаты курса отправим данные в CRM через POST запрос.
add_action('learnpress_user_enrolled_course', 'learnpressru_sync_user_to_crm', 10, 3);
function learnpressru_sync_user_to_crm($user_id, $course_id, $order_id) {
$user_info = get_userdata($user_id);
$course = learn_press_get_course($course_id);
$order = learn_press_get_order($order_id);
$data = [
'user_email' => $user_info->user_email,
'user_name' => $user_info->display_name,
'course_title' => $course->get_title(),
'order_total' => $order->get_total()
];
$response = wp_remote_post('https://example-crm.com/api/v1/leads', [
'body' => json_encode($data),
'headers' => ['Content-Type' => 'application/json'],
'timeout' => 15,
]);
// Логируем результат или обрабатываем ошибки
}
Этот код подключается к событию записи пользователя на курс, собирает нужные данные и отправляет их в CRM.
2. Использование REST API LearnPress для выгрузки и импорта данных
LearnPress имеет встроенный REST API, который позволяет получать и изменять данные курсов, пользователей и заказов. Вы можете настроить внешнюю систему, чтобы она периодически запрашивала эти данные и обновляла свои базы.
Пример запроса для получения списка курсов:
GET https://your-site.ru/wp-json/learnpress/v1/courses
Далее по API можно создавать собственные эндпоинты или расширять существующие, чтобы обрабатывать синхронизацию в обе стороны.
Практика: интеграция LearnPress с сервисом рассылок через плагин и код
Допустим, вы хотите, чтобы при регистрации на курс пользователя автоматически добавляло в список рассылки MailerLite. Для этого есть официальный плагин MailerLite для WordPress, но можно и сделать кастомную интеграцию.
Подключаем обработчик события регистрации на курс:
add_action('learnpress_user_enrolled_course', 'learnpressru_add_user_to_mailerlite', 10, 3);
function learnpressru_add_user_to_mailerlite($user_id, $course_id, $order_id) {
$user = get_userdata($user_id);
$api_key = 'ваш_mailerlite_api_key';
$group_id = 'ид_группы_подписчиков';
$data = [
'email' => $user->user_email,
'fields' => [
'name' => $user->first_name
]
];
$response = wp_remote_post("https://api.mailerlite.com/api/v2/groups/{$group_id}/subscribers", [
'body' => json_encode($data),
'headers' => [
'Content-Type' => 'application/json',
'X-MailerLite-ApiKey' => $api_key
],
'timeout' => 15,
]);
if (is_wp_error($response)) {
error_log('MailerLite API error: ' . $response->get_error_message());
}
}
Такой подход позволяет автоматически добавлять пользователей из LearnPress в рассылку без дополнительных действий.
Реализация двусторонней синхронизации с помощью очередей и Cron
Иногда для снижения нагрузки и более стабильной работы лучше накапливать изменения в базе, а потом периодически отправлять их пакетами. Для этого можно создать отдельную таблицу для логирования событий LearnPress, а затем cron-задачей обрабатывать эти логи.
Пример создания таблицы и записи событий:
function learnpressru_create_sync_table() {
global $wpdb;
$table_name = $wpdb->prefix . 'learnpress_sync_queue';
$charset_collate = $wpdb->get_charset_collate();
$sql = "CREATE TABLE IF NOT EXISTS $table_name (
id bigint(20) unsigned NOT NULL AUTO_INCREMENT,
event_type varchar(100) NOT NULL,
data longtext NOT NULL,
processed tinyint(1) DEFAULT 0,
created_at datetime DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id)
) $charset_collate;";
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
dbDelta($sql);
}
add_action('learnpress_user_enrolled_course', 'learnpressru_log_sync_event', 10, 3);
function learnpressru_log_sync_event($user_id, $course_id, $order_id) {
global $wpdb;
$table_name = $wpdb->prefix . 'learnpress_sync_queue';
$item = [
'event_type' => 'user_enrolled',
'data' => maybe_serialize(compact('user_id', 'course_id', 'order_id')),
'processed' => 0,
'created_at' => current_time('mysql'),
];
$wpdb->insert($table_name, $item);
}
Далее создаём cron-задачу, которая будет обрабатывать эти записи и отправлять их в нужные сервисы.
Полезные рекомендации по безопасности и стабильности
- Используйте проверку ответа от внешних API и логи для отладки.
- Не блокируйте выполнение основного процесса — лучше отправлять данные асинхронно через wp_cron или внешние очереди.
- Для больших платформ рассмотрите использование внешних интеграционных сервисов (Zapier, Integromat).
- Для аутентификации используйте безопасные методы: OAuth, API-ключи в заголовках;
- Храните чувствительные данные (ключи, пароли) в
wp-config.phpили через защищённые плагины вроде Clearfy Pro.
Заключение
Синхронизация LearnPress с внешними системами — задача, решаемая через хуки, REST API и очереди. В зависимости от масштабов проекта и требований к скорости обновления данных, вы можете выбрать подходящий способ. Используйте приведённые примеры как основу для своих интеграций и адаптируйте их под конкретные API и бизнес-логику.
Если вам нужны удобные инструменты для оптимизации и безопасности WordPress и LearnPress, обратите внимание на Clearfy Pro — плагин с набором полезных функций для разработчиков и администраторов.