Как добавить уникальный фильтр по статусу заявки в LearnPress

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

Почему нужен кастомный фильтр по статусу заявки в LearnPress

Стандартно LearnPress позволяет просматривать заявки на курсы, но фильтрация по статусам (например, ожидает оплаты, подтверждена, отклонена) реализована не всегда удобно или отсутствует. Добавление собственного фильтра поможет:

  • Ускорить работу с заявками;
  • Упростить отчетность и контроль;
  • Автоматизировать процесс обработки заявок.

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

Создание кастомного фильтра по статусам заявок LearnPress

Для начала создадим функцию, которая добавит выпадающий список фильтра в список заявок LearnPress. В файле functions.php вашей темы или в отдельном плагине добавьте следующий код:

function learnpressru_add_status_filter() {
    $screen = get_current_screen();
    if ( 'edit-lp_order' !== $screen->id ) {
        return;
    }

    $statuses = array(
        '' => 'Все статусы',
        'pending' => 'Ожидает оплаты',
        'completed' => 'Оплачена',
        'cancelled' => 'Отменена',
        'failed' => 'Неудачная',
    );

    echo '<select name="lp_order_status" id="dropdown_lp_order_status">';
    foreach ( $statuses as $key => $label ) {
        $selected = ( isset( $_GET['lp_order_status'] ) && $_GET['lp_order_status'] === $key ) ? ' selected' : '';
        echo "<option value=\"$key\"$selected>$label</option>";
    }
    echo '</select>';
}
add_action( 'restrict_manage_posts', 'learnpressru_add_status_filter' );

Этот код добавит на страницу списка заявок выпадающий фильтр по статусу заказа LearnPress.

Обработка фильтра и изменение запроса

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

function learnpressru_filter_orders_by_status( $query ) {
    global $pagenow;
    $post_type = isset( $_GET['post_type'] ) ? $_GET['post_type'] : '';

    if ( 'edit.php' === $pagenow && 'lp_order' === $post_type && ! empty( $_GET['lp_order_status'] ) ) {
        $status = sanitize_text_field( $_GET['lp_order_status'] );
        $query->query_vars['post_status'] = $status;
    }
}
add_action( 'pre_get_posts', 'learnpressru_filter_orders_by_status' );

Теперь при выборе статуса в фильтре список заявок будет обновляться соответствующим образом.

Расширение функционала с помощью плагина WPRemark

Если вы используете WPRemark, можно дополнительно настроить отображение и сортировку заявок по кастомным мета-полям или добавить новые статусы заявки для более гибкого управления.

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

Пример добавления нового статуса заявки

Допустим, нужно добавить статус "В обработке". Для этого в коде фильтра добавим новый статус и зарегистрируем его в WordPress:

function learnpressru_register_custom_order_status() {
    register_post_status( 'processing', array(
        'label'                     => _x( 'В обработке', 'Order status', 'learnpressru' ),
        'public'                    => true,
        'exclude_from_search'       => false,
        'show_in_admin_all_list'    => true,
        'show_in_admin_status_list' => true,
        'label_count'               => _n_noop( 'В обработке <span class="count">(%s)</span>', 'В обработке <span class="count">(%s)</span>', 'learnpressru' )
    ));
}
add_action( 'init', 'learnpressru_register_custom_order_status' );

// Добавляем новый статус в список фильтров
function learnpressru_add_status_filter_extended() {
    $screen = get_current_screen();
    if ( 'edit-lp_order' !== $screen->id ) {
        return;
    }

    $statuses = array(
        '' => 'Все статусы',
        'pending' => 'Ожидает оплаты',
        'completed' => 'Оплачена',
        'cancelled' => 'Отменена',
        'failed' => 'Неудачная',
        'processing' => 'В обработке',
    );

    echo '<select name="lp_order_status" id="dropdown_lp_order_status">';
    foreach ( $statuses as $key => $label ) {
        $selected = ( isset( $_GET['lp_order_status'] ) && $_GET['lp_order_status'] === $key ) ? ' selected' : '';
        echo "<option value=\"$key\"$selected>$label</option>";
    }
    echo '</select>';
}
add_action( 'restrict_manage_posts', 'learnpressru_add_status_filter_extended' );

Теперь в фильтре можно выбрать и новый статус "В обработке", а заявки с таким статусом будут отображаться корректно.

Подводим итоги и рекомендации

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

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

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

⭐⭐⭐⭐⭐
Как добавить автоматические отчёты в LearnPress с помощью WPRemark
05.04.2026
Решение проблемы необновления статусов возврата платежа WooCommerce в LearnPress
04.05.2026
Как создать собственный тип вопроса для Quizle в LearnPress
15.03.2026
Как добавить платежные системы в LearnPress для приема оплат на сайте
08.03.2026
Как добавить независимые виды учебных материалов в LearnPress
15.04.2026
×
Quizle
Привлекайте, конвертируйте, зарабатывайте!
-15%

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

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