Как создать свой плагин для LearnPress: пошаговое руководство

LearnPress — один из самых популярных плагинов для создания онлайн-курсов на WordPress. Но стандартного функционала часто бывает недостаточно, и нужно создавать собственные расширения, чтобы добавить уникальные возможности. В этой статье мы подробно разберём, как разработать свой плагин для LearnPress с нуля, какие хуки и фильтры использовать, а также приведём примеры кода для решения типичных задач.

Что нужно для начала разработки плагина LearnPress

Для создания плагина понадобится базовое понимание архитектуры WordPress и LearnPress. Плагины LearnPress создаются как обычные WordPress-плагины, но для взаимодействия с LearnPress нужно использовать его API — хуки, фильтры и классы.

Основные требования:

  • Установленная и активная копия LearnPress;
  • Среда разработки с доступом к файловой системе сайта;
  • Знание PHP и базовое понимание WordPress-хуков;
  • Рекомендуется использовать объектно-ориентированный подход и следовать стандартам WordPress.

Создайте в каталоге wp-content/plugins папку, например learnpress-custom-extension, и в ней файл learnpress-custom-extension.php с заголовком плагина.

<?php
/**
 * Plugin Name: LearnPress Custom Extension
 * Description: Свой плагин-расширение для LearnPress
 * Version: 1.0
 * Author: learnpress.ru
 */

// Защита от прямого запуска
if ( ! defined('ABSPATH') ) {
    exit;
}

// Проверяем, активен ли LearnPress
function learnpress_custom_extension_check_learnpress() {
    if ( ! class_exists('LearnPress') ) {
        add_action('admin_notices', function(){
            echo '<div class="notice notice-error">LearnPress не активен. Плагин LearnPress Custom Extension отключен.</div>';
        });
        return false;
    }
    return true;
}

if ( ! learnpress_custom_extension_check_learnpress() ) {
    return;
}

// Здесь будет основной код плагина

Основные хуки и фильтры LearnPress для расширения функционала

LearnPress предоставляет множество хуков для интеграции. Вот самые востребованные категории:

  • Фильтры для изменения информации о курсах: learn_press_get_course_price_html, learn_press_courses_loop_item_title
  • Хуки для обработки заказа и оплаты: learn_press_order_status_changed, learn_press_before_add_course_to_cart
  • Хуки для пользовательского интерфейса: learn_press_before_course_content, learn_press_after_course_content

Используя эти хуки, можно добавлять поля, изменять логику и вывод информации.

Пример: добавим дополнительное поле в профиль пользователя для LearnPress

Допустим, нам нужно сохранить дополнительную информацию о пользователе, связанную с курсами, например, ID студента в сторонней системе.

add_action('show_user_profile', 'learnpress_custom_extension_user_profile_field');
add_action('edit_user_profile', 'learnpress_custom_extension_user_profile_field');

function learnpress_custom_extension_user_profile_field($user) {
    ?>
    <h3>Дополнительные данные LearnPress</h3>
    <table class="form-table">
        <tr>
            <th><label for="lp_student_id">ID студента</label></th>
            <td>
                <input type="text" name="lp_student_id" id="lp_student_id" value="<?php echo esc_attr(get_user_meta($user->ID, 'lp_student_id', true)); ?>" class="regular-text" />
                <p class="description">Введите ID студента для интеграции с внешними сервисами.</p>
            </td>
        </tr>
    </table>
    <?php
}

add_action('personal_options_update', 'learnpress_custom_extension_save_user_profile_field');
add_action('edit_user_profile_update', 'learnpress_custom_extension_save_user_profile_field');

function learnpress_custom_extension_save_user_profile_field($user_id) {
    if (!current_user_can('edit_user', $user_id)) {
        return false;
    }
    update_user_meta($user_id, 'lp_student_id', sanitize_text_field($_POST['lp_student_id']));
}

Этот код добавит поле в профиль пользователя в админке и сохранит его значение.

Как добавить новый тип урока или расширить существующий в LearnPress

LearnPress поддерживает разные типы уроков (видео, текстовые, тесты). Если нужно добавить свой тип, например, «Практическое задание», потребуется зарегистрировать новый класс урока и подключить его через фильтр.

Для этого создаём класс, наследующий LP_Lesson, и регистрируем его:

class LP_Lesson_Practical extends LP_Lesson {
    public function __construct( $lesson = null ) {
        parent::__construct( $lesson );
        // Дополнительные свойства и методы
    }

    public function get_type() {
        return 'practical';
    }

    // Можно переопределить метод вывода контента
    public function get_content() {
        return '<p>Здесь размещено практическое задание.</p>';
    }
}

add_filter('learn-press/lesson-class', function($class, $lesson_type) {
    if ( $lesson_type === 'practical' ) {
        return 'LP_Lesson_Practical';
    }
    return $class;
}, 10, 2);

После этого при создании урока в админке можно указать тип practical и задействовать новую логику.

Как безопасно работать с заказами и статусами LearnPress

Многие задачи связаны с обработкой статусов заказа, например, добавлением доступа к курсам после оплаты или выполнением дополнительных действий.

LearnPress имеет хук learn_press_order_status_changed, который вызывается при изменении статуса заказа.

add_action('learn_press_order_status_changed', 'learnpress_custom_extension_order_status_changed', 10, 3);

function learnpress_custom_extension_order_status_changed($order_id, $old_status, $new_status) {
    $order = learn_press_get_order($order_id);
    if (!$order) {
        return;
    }
    // Пример: отправить письмо при переходе в статус "завершено"
    if ($new_status === 'completed') {
        $user_id = $order->get_user_id();
        $courses = $order->get_items('lp_course');
        // Логика отправки письма
        wp_mail(get_userdata($user_id)->user_email, 'Доступ к курсам активирован', 'Ваши курсы теперь доступны.');
    }
}

Такой подход позволяет расширять логику оплаты и уведомлений без изменения ядра LearnPress.

Заключение: лучшие практики разработки плагинов для LearnPress

Создание плагина для LearnPress — это отличный способ кастомизировать онлайн-обучение под свои задачи. Важно:

  • Использовать хуки и фильтры, не модифицировать ядро;
  • Следить за совместимостью с обновлениями LearnPress;
  • Писать чистый, читаемый и безопасный код;
  • Тестировать на разных версиях WordPress и LearnPress;
  • Использовать объектно-ориентированный подход для удобства поддержки.

Используя приведённые примеры, вы сможете создавать мощные расширения и улучшать функционал своего сайта на LearnPress и WordPress.

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

⭐⭐⭐⭐⭐
Как создать автоматические отчёты в LearnPress с помощью WPRemark
30.03.2026
Как создать свой плагин для LearnPress: подробное руководство с примерами кода
01.11.2025
Как создать свой шорткод в LearnPress для расширения функционала
09.11.2025
Как отладить проблемы с просмотром видео в LearnPress на WordPress
23.01.2026
Как добавить автоматические отчёты в LearnPress с помощью WPRemark
05.04.2026
×
Quizle
Привлекайте, конвертируйте, зарабатывайте!
-15%

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

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