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

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

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

Активность пользователей — это любые действия, которые они совершают на сайте: вход в систему, просмотр страниц, публикация комментариев, оформление заказов и т.д. Сбор таких данных дает несколько преимуществ:

  • Аналитика поведения: вы узнаете, какие разделы наиболее популярны и какие действия совершают пользователи.
  • Безопасность: выявление подозрительной активности (например, многократные неудачные попытки входа).
  • Оптимизация сайта: понимание узких мест и точек выхода пользователей.

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

Использование плагина WP Activity Log для расширенного мониторинга

Если нужна комплексная система мониторинга с удобным интерфейсом, рекомендую плагин WP Activity Log. Он позволяет отслеживать:

  • Входы и выходы пользователей
  • Изменения в записях и страницах
  • Изменения настроек
  • Действия плагинов и тем

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

Создание собственного решения для отчета активности пользователей

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

1. Создаем таблицу для хранения логов

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

function wpapp_create_activity_table() {
    global $wpdb;
    $table_name = $wpdb->prefix . 'wpapp_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,
        action varchar(100) NOT NULL,
        description text NOT NULL,
        created_at datetime DEFAULT CURRENT_TIMESTAMP NOT NULL,
        PRIMARY KEY  (id)
    ) $charset_collate;";

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

Эта таблица будет хранить ID пользователя, действие, описание и дату события.

2. Записываем действия пользователей

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

function wpapp_log_user_activity($user_id, $action, $description) {
    global $wpdb;
    $table_name = $wpdb->prefix . 'wpapp_user_activity';

    $wpdb->insert(
        $table_name,
        [
            'user_id' => $user_id,
            'action' => $action,
            'description' => $description,
            'created_at' => current_time('mysql')
        ]
    );
}

// Пример записи при входе пользователя
function wpapp_on_user_login($user_login, $user) {
    wpapp_log_user_activity($user->ID, 'login', 'Пользователь вошел в систему');
}
add_action('wp_login', 'wpapp_on_user_login', 10, 2);

// Пример записи при публикации записи
function wpapp_on_post_publish($ID, $post) {
    wpapp_log_user_activity($post->post_author, 'publish_post', 'Опубликована запись ID ' . $ID);
}
add_action('publish_post', 'wpapp_on_post_publish', 10, 2);

Можно расширить список отслеживаемых действий по своему усмотрению.

3. Вывод отчета в админке WordPress

Создадим страницу в админке для отображения отчета с фильтрами:

function wpapp_add_admin_menu() {
    add_menu_page(
        'Отчет активности',
        'Активность пользователей',
        'manage_options',
        'wpapp-user-activity',
        'wpapp_render_report_page',
        'dashicons-analytics',
        20
    );
}
add_action('admin_menu', 'wpapp_add_admin_menu');

function wpapp_render_report_page() {
    global $wpdb;
    $table_name = $wpdb->prefix . 'wpapp_user_activity';

    $user_id = isset($_GET['user_id']) ? intval($_GET['user_id']) : 0;
    $action = isset($_GET['action']) ? sanitize_text_field($_GET['action']) : '';

    $where = [];
    if ($user_id) {
        $where[] = $wpdb->prepare('user_id = %d', $user_id);
    }
    if ($action) {
        $where[] = $wpdb->prepare('action = %s', $action);
    }
    $where_sql = '';
    if ($where) {
        $where_sql = 'WHERE ' . implode(' AND ', $where);
    }

    $results = $wpdb->get_results("SELECT * FROM $table_name $where_sql ORDER BY created_at DESC LIMIT 100");

    echo '<h1>Отчет по активности пользователей</h1>';

    // Форма фильтрации
    echo '<form method="GET">';
    echo '<input type="hidden" name="page" value="wpapp-user-activity" />';
    echo '<input type="number" name="user_id" placeholder="ID пользователя" value="' . esc_attr($user_id) . '" /> ';
    echo '<input type="text" name="action" placeholder="Действие" value="' . esc_attr($action) . '" /> ';
    echo '<input type="submit" value="Фильтровать" />';
    echo '</form>';

    if ($results) {
        echo '<table class="wp-list-table widefat fixed striped">';
        echo '<thead><tr><th>ID</th><th>Пользователь</th><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 : 'Неизвестен';
            echo '<tr>';
            echo '<td>' . esc_html($row->id) . '</td>';
            echo '<td>' . esc_html($user_name) . '</td>';
            echo '<td>' . esc_html($row->action) . '</td>';
            echo '<td>' . esc_html($row->description) . '</td>';
            echo '<td>' . esc_html($row->created_at) . '</td>';
            echo '</tr>';
        }

        echo '</tbody></table>';
    } else {
        echo '<p>Данных не найдено.</p>';
    }
}

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

Дополнительные рекомендации и расширение функционала

1. Кэширование и пагинация. При большом объеме данных стоит добавить пагинацию и кэшировать результаты для скорости.

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

3. Интеграция с аналитикой. Для глубокого анализа можно экспортировать данные в CSV или подключить к Google Analytics.

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

Заключение

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

Наш каталог плагинов WordPress