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

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

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

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

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

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

Варианты реализации журнала активности

Использование плагинов

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

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

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

Создание собственного решения на примере кода

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

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

    $sql = "CREATE TABLE $table_name (
        id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
        user_id BIGINT(20) UNSIGNED NOT NULL,
        action VARCHAR(255) NOT NULL,
        object_id BIGINT(20) UNSIGNED DEFAULT NULL,
        object_type VARCHAR(100) DEFAULT NULL,
        ip_address VARCHAR(45) DEFAULT NULL,
        user_agent TEXT DEFAULT NULL,
        created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
        PRIMARY KEY  (id),
        KEY user_id (user_id),
        KEY created_at (created_at)
    ) $charset_collate;";

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

Функция создаст таблицу для хранения логов активности при активации плагина или темы.

Запись активности пользователей

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

function journalx_log_user_activity($user_id, $action, $object_id = null, $object_type = null) {
    global $wpdb;
    $table_name = $wpdb->prefix . 'journalx_activity_log';

    $ip_address = $_SERVER['REMOTE_ADDR'] ?? '';
    $user_agent = $_SERVER['HTTP_USER_AGENT'] ?? '';

    $wpdb->insert(
        $table_name,
        [
            'user_id' => $user_id,
            'action' => $action,
            'object_id' => $object_id,
            'object_type' => $object_type,
            'ip_address' => $ip_address,
            'user_agent' => $user_agent,
            'created_at' => current_time('mysql', 1),
        ],
        [
            '%d', '%s', '%d', '%s', '%s', '%s', '%s'
        ]
    );
}

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

Пример фиксации публикации записи

add_action('publish_post', function($post_ID) {
    $post = get_post($post_ID);
    if (!$post) return;
    $author_id = $post->post_author;
    journalx_log_user_activity($author_id, 'Опубликовал запись', $post_ID, 'post');
});

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

Вывод журнала активности в админке WordPress

Для удобства можно вывести журнал активности в отдельной странице админки. Вот упрощённый пример добавления меню и таблицы с записями.

function journalx_add_admin_menu() {
    add_menu_page(
        'Журнал активности',
        'Журнал активности',
        'manage_options',
        'journalx-activity-log',
        'journalx_render_activity_log_page'
    );
}
add_action('admin_menu', 'journalx_add_admin_menu');

function journalx_render_activity_log_page() {
    global $wpdb;
    $table_name = $wpdb->prefix . 'journalx_activity_log';
    $logs = $wpdb->get_results("SELECT * FROM $table_name ORDER BY created_at DESC LIMIT 50");

    echo '<div class="wrap"><h1>Журнал активности пользователей</h1><table class="wp-list-table widefat fixed striped">';
    echo '<thead><tr><th>ID</th><th>Пользователь</th><th>Действие</th><th>Объект</th><th>IP</th><th>Дата</th></tr></thead><tbody>';

    foreach ($logs as $log) {
        $user_info = get_userdata($log->user_id);
        $user_name = $user_info ? esc_html($user_info->user_login) : 'Неизвестный';
        $object = $log->object_type ? esc_html($log->object_type) . ' #' . $log->object_id : '-';

        echo '<tr>' .
             '<td>' . esc_html($log->id) . '</td>' .
             '<td>' . $user_name . '</td>' .
             '<td>' . esc_html($log->action) . '</td>' .
             '<td>' . $object . '</td>' .
             '<td>' . esc_html($log->ip_address) . '</td>' .
             '<td>' . esc_html($log->created_at) . '</td>' .
             '</tr>';
    }

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

Этот код создаст страницу с таблицей последних 50 действий пользователей.

Расширение функционала и интеграция с плагинами

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

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

Советы по оптимизации журнала активности

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

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

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
Как реализовать выделение синтаксиса в визуальном редакторе WordPress
18.12.2025
Как автоматизировать размещение контента в WordPress с помощью WPRemark
10.04.2026
Как создать динамические способы загрузки контента в WordPress
10.01.2026
Как создать автоматический журнал изменений в WordPress с подробными примерами
11.03.2026
Как сделать автоматический журнал изменений в WordPress с подробными примерами кода
16.04.2026
×
WordPress
дай сайту суперсилу!

Скидки на топовые темы и плагины

Активировать суперсилу ⋙