Как отображать последних активных пользователей WordPress

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

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

Отслеживание активности пользователей помогает:

  • Повысить вовлеченность, показывая кто недавно был на сайте.
  • Контролировать активность и выявлять потенциальных спамеров.
  • Создавать доверие в сообществе, демонстрируя живых участников.
  • Использовать данные для внутренней аналитики и мотивации пользователей.

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

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

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

Обычно для сохранения используется user_meta с ключом, например, wpco_last_login. При каждом входе пользователя в систему мы обновляем этот мета-ключ текущим временем.

Добавление записи времени последнего входа

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

add_action('wp_login', 'wpco_update_last_login', 10, 2);
function wpco_update_last_login($user_login, $user) {
    update_user_meta($user->ID, 'wpco_last_login', current_time('mysql'));
}

Функция срабатывает при успешном входе и обновляет мета-ключ с текущим временем сервера в формате MySQL.

Вывод списка последних активных пользователей

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

Для выборки подойдет WP_User_Query с мета-запросом:

function wpco_get_recent_active_users($hours = 24) {
    $since = date('Y-m-d H:i:s', strtotime('-' . intval($hours) . ' hours'));

    $args = [
        'meta_key' => 'wpco_last_login',
        'meta_value' => $since,
        'meta_compare' => '>=',
        'orderby' => 'meta_value',
        'order' => 'DESC',
        'number' => 10,
        'fields' => ['ID', 'display_name', 'user_email'],
    ];

    $user_query = new WP_User_Query($args);

    return $user_query->get_results();
}

Эта функция возвращает массив пользователей, которые заходили за последние $hours часов (по умолчанию 24), максимум 10 штук, отсортированных по времени входа.

Пример вывода на фронтенде

Для вывода списка последних активных пользователей в шаблон можно использовать следующий код:

$users = wpco_get_recent_active_users(24);
if (!empty($users)) {
    echo '<ul class="wpco-active-users">';
    foreach ($users as $user) {
        $last_login = get_user_meta($user->ID, 'wpco_last_login', true);
        echo '<li>' . esc_html($user->display_name) . ' — последний вход: ' . esc_html($last_login) . '</li>';
    }
    echo '</ul>';
} else {
    echo '<p>Активных пользователей за последние 24 часа нет.</p>';
}

Использование плагинов для отслеживания активности

Если вы не хотите писать код, есть хорошие плагины, которые помогут:

  • WP User Activity Log — ведет подробный лог активности пользователей, включая входы, просмотры страниц, изменения профиля.
  • Simple History — простой журнал действий, можно настроить отображение последних активных.
  • Clearfy Pro — оптимизирует работу сайта и может помочь сократить нагрузку, если у вас большой сайт с активными пользователями.

Эти плагины позволяют получить расширенную аналитику и имеют готовые виджеты и шорткоды для вывода.

Оптимизация и кеширование

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

  • Кешировать результаты запроса с помощью Transients API.
  • Обновлять кеш по расписанию через WP-Cron, например, раз в 15 минут.
  • Использовать индексирование мета-ключей в базе данных для ускорения запросов.

Пример простого кеширования:

function wpco_get_recent_active_users_cached($hours = 24) {
    $cache_key = 'wpco_recent_active_' . $hours;
    $users = get_transient($cache_key);
    if ($users === false) {
        $users = wpco_get_recent_active_users($hours);
        set_transient($cache_key, $users, 15 * MINUTE_IN_SECONDS);
    }
    return $users;
}

Заключение

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

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

Как устроить автоматический отчет о ошибках WordPress с уведомлениями на почту
22.01.2026
Как создать автоматический бэкап WordPress с помощью кода и плагинов
01.01.2026
Оптимизация базы данных WordPress: практические советы и примеры
06.11.2025
Как добавить настройки в админ-панель WordPress
02.12.2025
Как правильно создать и использовать Metabox в WordPress
22.11.2025