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

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

Зачем нужно отслеживать активность пользователей в WordPress

Отслеживание активности позволяет:

  • Улучшить безопасность сайта, обнаруживая подозрительные действия.
  • Анализировать поведение пользователей для улучшения UX и контента.
  • Вести аудит действий администраторов и редакторов.
  • Автоматизировать маркетинговые задачи и персонализацию.

Реализовать это можно несколькими способами, начиная с плагинов и заканчивая написанием кастомного функционала.

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

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

1. WP Activity Log

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

Преимущества:

  • Подробные логи действий.
  • Фильтрация и поиск по активности.
  • Уведомления о важных событиях.

Недостаток — может нагружать базу данных при большом объеме трафика.

2. Simple History

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

3. Stream

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

Создание кастомного отслеживания активности пользователей в WordPress

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

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

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

function wpco_track_user_login( $user_login, $user ) {
    global $wpdb;
    $table = $wpdb->prefix . 'wpco_user_activity';
    $wpdb->insert( $table, [
        'user_id' => $user->ID,
        'activity_type' => 'login',
        'activity_time' => current_time( 'mysql' ),
        'activity_desc' => 'Пользователь вошёл в систему'
    ] );
}
add_action( 'wp_login', 'wpco_track_user_login', 10, 2 );

// Отслеживание посещения страниц
function wpco_track_user_page_view() {
    if ( is_user_logged_in() ) {
        global $wpdb;
        $user_id = get_current_user_id();
        $table = $wpdb->prefix . 'wpco_user_activity';
        $page_url = esc_url_raw( $_SERVER['REQUEST_URI'] );
        $wpdb->insert( $table, [
            'user_id' => $user_id,
            'activity_type' => 'page_view',
            'activity_time' => current_time( 'mysql' ),
            'activity_desc' => 'Просмотр страницы: ' . $page_url
        ] );
    }
}
add_action( 'wp_head', 'wpco_track_user_page_view' );

Этот код фиксирует вход пользователя и каждое посещение страницы, записывая данные в отдельную таблицу базы данных. Для начала необходимо создать таблицу wpco_user_activity с полями:

  • id — первичный ключ
  • user_id — ID пользователя
  • activity_type — тип активности ('login', 'page_view' и др.)
  • activity_time — время события
  • activity_desc — описание действия

Создать таблицу можно так:

function wpco_create_activity_table() {
    global $wpdb;
    $table_name = $wpdb->prefix . 'wpco_user_activity';
    $charset_collate = $wpdb->get_charset_collate();

    $sql = "CREATE TABLE $table_name ( 
        id mediumint(9) NOT NULL AUTO_INCREMENT, 
        user_id bigint(20) NOT NULL, 
        activity_type varchar(50) NOT NULL, 
        activity_time datetime DEFAULT '0000-00-00 00:00:00' NOT NULL, 
        activity_desc text NOT NULL, 
        PRIMARY KEY  (id)
    ) $charset_collate;";

    require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
    dbDelta( $sql );
}
register_activation_hook( __FILE__, 'wpco_create_activity_table' );

Просмотр и анализ активности пользователей в админке

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

function wpco_add_admin_menu() {
    add_menu_page('Активность пользователей', 'Активность', 'manage_options', 'wpco-user-activity', 'wpco_render_activity_page');
}
add_action('admin_menu', 'wpco_add_admin_menu');

function wpco_render_activity_page() {
    global $wpdb;
    $table = $wpdb->prefix . 'wpco_user_activity';
    $activities = $wpdb->get_results("SELECT * FROM $table ORDER BY activity_time DESC LIMIT 100");
    echo '<div class="wrap"><h1>Логи активности пользователей</h1><table class="wp-list-table widefat fixed striped"><thead><tr><th>ID</th><th>Пользователь</th><th>Тип активности</th><th>Время</th><th>Описание</th></tr></thead><tbody>';
    foreach ( $activities as $act ) {
        $user_info = get_userdata( $act->user_id );
        $user_name = $user_info ? $user_info->user_login : 'Гость';
        echo "<tr><td>{$act->id}</td><td>{$user_name}</td><td>{$act->activity_type}</td><td>{$act->activity_time}</td><td>{$act->activity_desc}</td></tr>";
    }
    echo '</tbody></table></div>';
}

Оптимизация и безопасность

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

  • Добавляйте индексы по полям для ускорения запросов.
  • Делайте архивирование или очистку старых данных с помощью WP-Cron.
  • Используйте nonce и проверяйте права пользователя при выводе данных в админке.

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

Пример интеграции с плагином Clearfy Pro для улучшения безопасности

Плагин Clearfy Pro поможет дополнительно защитить сайт и оптимизировать записи логов активности, отключая лишние функции, уменьшая нагрузку и предотвращая уязвимости.

Выводы

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

Как добавить расширенные типы данных в WordPress
11.12.2025
Как использовать REST API для создания кастомных эндпойнтов в WordPress
08.12.2025
Как сделать динамические шорткоды в WordPress: подробное руководство
02.11.2025
Автоматическое удаление старых комментариев в WordPress
09.02.2026
Как установить ограничения на размер файлов в WordPress
30.01.2026