wpmoney.ru wordpress WP Money

Как создать автоматическую сборку статистики посетителя в WordPress

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

Почему стоит собирать статистику самостоятельно

Большинство сайтов используют Google Analytics или Яндекс.Метрику, но эти сервисы имеют ограничения по конфиденциальности и иногда замедляют загрузку страниц из-за внешних скриптов. Собственная система статистики позволяет:

  • Контролировать все данные на своём сервере;
  • Минимизировать влияние на скорость сайта;
  • Гибко настраивать сбор необходимых данных;
  • Избежать зависимости от внешних сервисов и их изменений.

Однако разработка собственной системы требует знаний PHP, работы с базой данных и понимания принципов сбора данных.

Основные данные для сбора

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

  • IP адрес посетителя (с целью геолокации и подсчёта уникальных пользователей);
  • URL посещённой страницы;
  • Время посещения;
  • User-Agent (браузер, устройство, ОС);
  • Реферер (откуда пришёл пользователь);
  • Сессия (чтобы понимать повторные посещения).

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

Создание таблицы для хранения статистики в базе данных

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

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

    $sql = "CREATE TABLE IF NOT EXISTS $table_name (
        id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
        ip_address VARCHAR(45) NOT NULL,
        page_url TEXT NOT NULL,
        visit_time DATETIME NOT NULL,
        user_agent TEXT NOT NULL,
        referer TEXT DEFAULT NULL,
        session_id VARCHAR(64) NOT NULL,
        PRIMARY KEY  (id),
        KEY ip_address (ip_address),
        KEY visit_time (visit_time)
    ) $charset_collate;";

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

Этот код создаст таблицу wp_wpmoney_visitor_stats, где будут храниться все основные данные.

Отслеживание посещений и запись данных

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

Пример функции, которая записывает посещение в базу:

function wpmoney_record_visitor_stats() {
    if (is_admin()) return; // не записывать в админке

    global $wpdb;
    $table_name = $wpdb->prefix . 'wpmoney_visitor_stats';

    $ip = $_SERVER['REMOTE_ADDR'];
    $url = esc_url_raw( home_url( add_query_arg( null, null ) ) );
    $time = current_time('mysql');
    $user_agent = isset($_SERVER['HTTP_USER_AGENT']) ? sanitize_text_field($_SERVER['HTTP_USER_AGENT']) : '';
    $referer = isset($_SERVER['HTTP_REFERER']) ? esc_url_raw($_SERVER['HTTP_REFERER']) : null;

    if (!session_id()) {
        session_start();
    }
    $session_id = session_id();

    $wpdb->insert(
        $table_name,
        [
            'ip_address' => $ip,
            'page_url' => $url,
            'visit_time' => $time,
            'user_agent' => $user_agent,
            'referer' => $referer,
            'session_id' => $session_id
        ],
        [ '%s', '%s', '%s', '%s', '%s', '%s' ]
    );
}
add_action('template_redirect', 'wpmoney_record_visitor_stats');

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

Отслеживание уникальных посетителей и сессий

Для определения уникальных пользователей используем сессионный идентификатор. Чтобы не создавать сессии для каждого посетителя, можно хранить cookie с уникальным ID.

Пример установки cookie и получения session_id:

function wpmoney_set_visitor_cookie() {
    if (!isset($_COOKIE['wpmoney_visitor_id'])) {
        $visitor_id = bin2hex(random_bytes(16));
        setcookie('wpmoney_visitor_id', $visitor_id, time() + 3600 * 24 * 30, COOKIEPATH, COOKIE_DOMAIN);
        $_COOKIE['wpmoney_visitor_id'] = $visitor_id;
    }
}
add_action('init', 'wpmoney_set_visitor_cookie');

Замените в функции записи посещений session_id() на $_COOKIE['wpmoney_visitor_id'] для идентификации уникальных пользователей.

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

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

  • WP Statistics — собирает подробную статистику прямо в админке без отправки данных на внешние сервисы;
  • Clearfy Pro — оптимизационный плагин с функциями защиты и сбора полезной аналитики;
  • WPGPT — помогает автоматизировать получение и анализ данных через ИИ, можно применять для обработки статистики;
  • Expert Review — полезен для сбора отзывов и анализа поведения пользователей на сайте.

Все эти плагины доступны на WPSHOP.RU.

Вывод и анализ собранных данных

Для анализа создайте простой административный интерфейс с выборкой из таблицы статистики. Пример функции для вывода количества посещений за последние 7 дней:

function wpmoney_get_weekly_visits() {
    global $wpdb;
    $table_name = $wpdb->prefix . 'wpmoney_visitor_stats';
    $date_from = date('Y-m-d H:i:s', strtotime('-7 days'));

    $count = $wpdb->get_var($wpdb->prepare(
        "SELECT COUNT(DISTINCT session_id) FROM $table_name WHERE visit_time >= %s",
        $date_from
    ));

    return intval($count);
}

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

Заключение

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

×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше