wpconsult.ru wordpress WP Consult

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

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

Почему нужен просмотр по пользователям в WordPress

По умолчанию WordPress не предоставляет удобного способа отфильтровать контент по автору или любому другому параметру пользователя для широкого круга задач. Например, можно захотеть:

  • Показать пользователю его личные заказы, записи или комментарии.
  • Администратору — отфильтровать записи по конкретному автору для удобства управления.
  • Создать пользовательские панели с динамическим выводом данных в зависимости от авторизации.

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

Использование WP_Query для фильтрации записей по пользователю

Самый базовый способ — использовать класс WP_Query с параметром author, чтобы получить записи конкретного пользователя. Рассмотрим пример функции, которая выводит список статей пользователя с ID, переданным в аргументах.

function wpconsult_get_posts_by_user($user_id) {
    $args = array(
        'author' => $user_id,
        'post_type' => 'post',
        'post_status' => 'publish',
        'posts_per_page' => 10,
    );
    $query = new WP_Query($args);
    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();
}

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

Фильтрация по текущему авторизованному пользователю

Часто нужно показать информацию именно для текущего пользователя. Для этого используем функцию get_current_user_id() и вызовем вышеописанную функцию:

function wpconsult_show_my_posts() {
    $user_id = get_current_user_id();
    if ($user_id === 0) {
        echo '<p>Пожалуйста, войдите в систему, чтобы просмотреть записи.</p>';
        return;
    }
    wpconsult_get_posts_by_user($user_id);
}

Далее можно вывести эту информацию на любой странице через шорткод:

add_shortcode('my_posts', 'wpconsult_show_my_posts');

После чего в редакторе просто вставьте [my_posts] — и пользователь увидит свои записи.

Создание пользовательских метаполей и фильтрация по ним

Иногда нужно не просто фильтровать по автору, а учитывать дополнительные данные, связанные с пользователем или записью. Например, добавить метаполе customer_id к записям и фильтровать по нему.

Пример запроса с метаполем:

function wpconsult_get_posts_by_customer_id($customer_id) {
    $args = array(
        'post_type' => 'order',
        'meta_query' => array(
            array(
                'key' => 'customer_id',
                'value' => $customer_id,
                'compare' => '=',
            )
        ),
        'posts_per_page' => -1,
    );
    $query = new WP_Query($args);
    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();
}

Это удобно, если идентификатор пользователя не совпадает с ID в WordPress, например, для интеграции с внешними системами.

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

Если хочется использовать готовые решения, можно обратить внимание на следующие плагины:

  • Admin Columns Pro — расширяет возможности таблиц в админке, позволяя фильтровать записи по авторам, метаполям и другим параметрам.
  • WP User Frontend — позволяет создавать фронтенд-формы для пользователей, чтобы они могли видеть и редактировать свои записи.
  • Profile Builder — расширенный редактор профиля с возможностью выводить кастомные данные на фронтенде.

Также из продуктов Clearfy Pro можно использовать оптимизации и дополнения, упрощающие работу с пользователями и их данными.

Как сделать просмотр по пользователям более безопасным

При реализации просмотра по пользователям важно защитить данные от посторонних:

  • Проверяйте права доступа с помощью функций current_user_can() и сравнения ID.
  • При выводе данных используйте функции экранирования, например esc_html() для текста и esc_url() для ссылок.
  • Не показывайте данные, если пользователь не авторизован.

Пример проверки в функции вывода:

function wpconsult_secure_show_my_posts() {
    $user_id = get_current_user_id();
    if ($user_id === 0) {
        echo '<p>Вы должны войти в систему для просмотра этих данных.</p>';
        return;
    }
    if (!current_user_can('read')) {
        echo '<p>У вас нет прав для просмотра этой информации.</p>';
        return;
    }
    wpconsult_get_posts_by_user($user_id);
}

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

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

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

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

×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее