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

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

Для чего нужен отчет активности пользователей в WordPress

Отчеты активности позволяют видеть, кто и когда посещал сайт, какие страницы просматривал, какие действия выполнял (например, оставлял комментарии, делал заказы в WooCommerce, заполнял формы). Это помогает:

  • Анализировать вовлеченность аудитории;
  • Выявлять подозрительную активность и предотвращать мошенничество;
  • Оптимизировать контент и улучшать юзабилити;
  • Автоматически уведомлять администраторов или маркетологов о ключевых событиях.

Использование плагинов для сбора данных активности

Для сбора данных о поведении пользователей можно использовать готовые решения. Вот несколько полезных плагинов:

  • WP Activity Log — мощный плагин для мониторинга активности пользователей и администраторов. Позволяет создавать отчеты, отправлять уведомления и фильтровать логи.
  • Simple History — легкий плагин с понятным интерфейсом, отображающий последние действия пользователей и админов.
  • Clearfy Pro (https://wpshop.ru/clearfy-pro/?utm_source=wptool.ru&utm_medium=article&utm_campaign=kak-ustroyt-avtomaticheskiy-otchet-po-aktivnosti-polzovateley) — оптимизатор, который также включает возможности по безопасности и логированию активности.

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

Как написать свой простой лог активности пользователей в WordPress

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

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

    $sql = "CREATE TABLE IF NOT EXISTS $table_name (
        id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
        user_id BIGINT(20) UNSIGNED NOT NULL,
        activity VARCHAR(255) NOT NULL,
        activity_time DATETIME NOT NULL,
        PRIMARY KEY (id)
    ) $charset_collate;";

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

Теперь добавим запись в эту таблицу при каждом входе пользователя:

function wptool_log_user_login($user_login, $user) {
    global $wpdb;
    $table_name = $wpdb->prefix . 'wptool_user_activity';

    $wpdb->insert(
        $table_name,
        [
            'user_id' => $user->ID,
            'activity' => 'login',
            'activity_time' => current_time('mysql')
        ]
    );
}
add_action('wp_login', 'wptool_log_user_login', 10, 2);

Таким образом вы собираете базовые данные о входах. Аналогично можно логировать другие события: регистрации, комментарии, заказы и т.д.

Автоматическая отправка отчета по электронной почте

Чтобы получать отчет без ручного запроса, сделаем функцию, которая собирает данные за сутки и отправляет письмо администратору:

function wptool_send_daily_user_activity_report() {
    global $wpdb;
    $table_name = $wpdb->prefix . 'wptool_user_activity';

    $date_from = date('Y-m-d 00:00:00', strtotime('-1 day'));
    $date_to = date('Y-m-d 23:59:59', strtotime('-1 day'));

    $results = $wpdb->get_results($wpdb->prepare(
        "SELECT user_id, activity, activity_time FROM $table_name WHERE activity_time BETWEEN %s AND %s",
        $date_from, $date_to
    ));

    if (empty($results)) {
        return; // Нет данных для отчета
    }

    $message = "Отчет активности пользователей за " . date('d.m.Y', strtotime('-1 day')) . ":\n";

    foreach ($results as $row) {
        $user_info = get_userdata($row->user_id);
        $user_name = $user_info ? $user_info->user_login : 'Unknown';
        $message .= "$user_name - $row->activity - $row->activity_time\n";
    }

    wp_mail(get_option('admin_email'), 'Ежедневный отчет активности пользователей', $message);
}

if (!wp_next_scheduled('wptool_daily_user_activity_report_event')) {
    wp_schedule_event(strtotime('00:10:00'), 'daily', 'wptool_daily_user_activity_report_event');
}
add_action('wptool_daily_user_activity_report_event', 'wptool_send_daily_user_activity_report');

Этот код настроит ежедневную отправку отчета в 00:10 по серверному времени.

Как визуализировать отчет активности на странице администратора

Для удобства можно вывести отчет прямо в админке. Добавим новый пункт меню и страницу с таблицей активности:

function wptool_add_admin_menu() {
    add_menu_page(
        'Активность пользователей',
        'Активность пользователей',
        'manage_options',
        'wptool-user-activity',
        'wptool_render_admin_page',
        'dashicons-analytics',
        80
    );
}
add_action('admin_menu', 'wptool_add_admin_menu');

function wptool_render_admin_page() {
    global $wpdb;
    $table_name = $wpdb->prefix . 'wptool_user_activity';

    $results = $wpdb->get_results("SELECT * FROM $table_name ORDER BY activity_time DESC LIMIT 50");

    echo '<div class="wrap"><h1>Отчет активности пользователей</h1>';
    echo '<table class="widefat fixed"><thead><tr><th>Пользователь</th><th>Активность</th><th>Время</th></tr></thead><tbody>';

    foreach ($results as $row) {
        $user_info = get_userdata($row->user_id);
        $user_name = $user_info ? $user_info->user_login : 'Unknown';
        echo "<tr><td>" . esc_html($user_name) . "</td><td>" . esc_html($row->activity) . "</td><td>" . esc_html($row->activity_time) . "</td></tr>";
    }

    echo '</tbody></table></div>';
}

Теперь администратор может в любой момент видеть последние действия пользователей без сторонних сервисов.

Интеграция с WPRemark для расширенной аналитики

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

Вы можете использовать собственный лог активности в связке с WPRemark, экспортируя данные через REST API и визуализируя их в удобных дашбордах.

Рекомендации по безопасности и производительности

Сбор и хранение активности пользователей требует аккуратности:

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

Если трафик большой, рассмотрите использование специализированных сервисов и плагинов, минимизирующих нагрузку на сервер.

Как создать автоматические уведомления в WordPress с помощью хуков и AJAX
10.03.2026
Как создать динамическую страницу в WordPress с помощью shortcode
19.12.2025
Как создать свой плагин в WordPress с назначением и примерами кода
16.11.2025
Удаление неиспользуемых таблиц базы данных в WordPress для оптимизации
25.02.2026
Как создать автоматическую переадресацию в WordPress по условиям
17.04.2026