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

В этой статье мы подробно разберём, как создать уникальный фильтр по пользователям в WordPress. Такой фильтр позволяет выводить записи, курсы или кастомные типы записей, связанные с конкретными пользователями, например, авторизованными студентами, преподавателями или авторами. Это полезно для образовательных сайтов, таких как wpfreecourses.ru, где необходимо показывать контент, персонализированный для каждого пользователя.

Зачем нужен фильтр по пользователям в WordPress

Фильтрация контента по пользователям позволяет создавать персонализированные страницы, например, показывать только те курсы, на которые записан текущий пользователь, или выводить уроки, созданные конкретным преподавателем. Это улучшает UX, упрощает навигацию и повышает вовлечённость.

Часто для этого используют плагины, но для гибкости и точного контроля лучше написать собственное решение с помощью WP_Query и фильтров.

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

Представим, что у вас есть кастомный тип записи course, а также метаполе enrolled_users, в котором хранится массив ID пользователей, записанных на курс. Наша задача — вывести на странице только те курсы, в которых числится текущий пользователь.

Создание WP_Query с фильтром по пользователю

Ниже пример кода, который можно вставить в файл шаблона или в shortcode-функцию:

function wpfreecourses_get_user_courses_query($user_id) {
    $args = [
        'post_type' => 'course',
        'posts_per_page' => -1,
        'meta_query' => [
            [
                'key' => 'enrolled_users',
                'value' => '"' . $user_id . '"',
                'compare' => 'LIKE'
            ]
        ]
    ];
    return new WP_Query($args);
}

// Получаем ID текущего пользователя
$current_user_id = get_current_user_id();
$query = wpfreecourses_get_user_courses_query($current_user_id);

if ($query->have_posts()) {
    echo '<ul>';
    while ($query->have_posts()) {
        $query->the_post();
        echo '<li><a href="' . get_permalink() . '">' . get_the_title() . '</a></li>';
    }
    echo '</ul>';
} else {
    echo '<p>У вас нет записанных курсов.</p>';
}
wp_reset_postdata();

Обратите внимание, что мы используем LIKE сравнение, потому что в метаполе хранится сериализованный массив ID пользователей. Если вы используете кастомные таблицы или отдельные связи — код будет другим.

Использование плагина Advanced Custom Fields для удобного управления метаполями

Для создания и управления метаполем enrolled_users удобно использовать плагин Advanced Custom Fields (ACF). В ACF можно создать поле типа «Пользователь», которое позволит удобно выбирать пользователей из админки и автоматически сохранит ID пользователей в метаполе.

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

Добавление AJAX фильтрации курсов по пользователям

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

Пример AJAX обработчика

add_action('wp_ajax_wpfreecourses_filter_user_courses', 'wpfreecourses_filter_user_courses_callback');
add_action('wp_ajax_nopriv_wpfreecourses_filter_user_courses', 'wpfreecourses_filter_user_courses_callback');

function wpfreecourses_filter_user_courses_callback() {
    $user_id = intval($_POST['user_id']);
    $query = wpfreecourses_get_user_courses_query($user_id);

    if ($query->have_posts()) {
        while ($query->have_posts()) {
            $query->the_post();
            echo '<li><a href="' . get_permalink() . '">' . get_the_title() . '</a></li>';
        }
    } else {
        echo '<li>Курсы не найдены.</li>';
    }
    wp_die();
}

Для вызова AJAX из JavaScript используйте стандартный объект jQuery.ajax или fetch, передавая action=wpfreecourses_filter_user_courses и user_id. Не забудьте локализовать скрипт для передачи параметра ajax_url.

Полезные плагины для улучшения фильтрации и управления пользователями

  • Clearfy Pro — для оптимизации и управления ролями пользователей;
  • WPCommunity — создание форумов и сообществ с возможностью фильтрации пользователей;
  • WPRemark — модерация комментариев и пользовательского контента.

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

Создание уникального фильтра по пользователям в WordPress — задача, которая решается при помощи метаполей, WP_Query и при необходимости AJAX. Это позволяет создавать мощный и гибкий функционал для образовательных сайтов, курсов и других проектов с персонализированным контентом.

Использование плагинов ACF и других инструментов из экосистемы WordPress помогает упростить работу с метаданными и улучшить UX.

Как автоматически создавать отзывы о курсах в WordPress
18.03.2026
Как создать автоматический excerpt для курсов в WordPress
18.01.2026
Как избежать проблем с производительностью WordPress при использовании внешних API
14.03.2026
Как создать автоматическое сохранение данных в формах WordPress
09.12.2025
Как создать многоуровневую навигацию в WordPress с помощью кода и плагинов
24.03.2026