Доработка шаблона WordPress — логирование посещений страниц

Был разработан и внедрен модуль для системы управления сайтом WordPress, позволяющий фиксировать факт посещения страниц сайта. Данные о каждом посещении (IP-адрес, URL страницы, реферер) сохраняются в специальном разделе административной панели WordPress в виде списка записей. Это позволяет получить представление о реальной активности на сайте: кто приходит, какие страницы посещаются, откуда приходят пользователи.

Зачем это нужно?

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

  • Мониторинг активности: Понимать, когда и какие страницы посещаются, особенно если основные инструменты аналитики (GA, Я.Метрика) отключены или дают искажённые данные (например, из-за блокировщиков рекламы).
  • Анализ трафика: Оценить источники трафика (рефереры), выявить популярные страницы.
  • Техническая диагностика: Отследить, как часто определённые страницы посещаются, например, для проверки работы редиректов или доступности контента.
  • Потребность в простой аналитике «внутри WordPress»: Для случаев, когда не хочется или нельзя использовать внешние сервисы аналитики, и нужен простой встроенный способ фиксации посещений.
  • Выявление не типовых запросов к файлам внутри системы, а также обращение к несуществующим файлам.

План проведённых работ

1. Анализ и проектирование:

  • Определение целей: фиксировать посещения, IP, рефереры; избежать сложного отслеживания пользователей.
  • Выбор подхода: создание собственного типа записи (CPT) в WordPress.

2. Разработка и внедрение:

  • Создание CPT visit_log: Регистрация нового типа записей visit_log с настройками, скрывающими его от публичного доступа, но позволяющими просматривать в админке.
  • Сбор данных: Разработка функции, которая срабатывает при загрузке страницы (кроме AJAX, админки, ботов), извлекает IP-адрес ($_SERVER['REMOTE_ADDR']), реферер ($_SERVER['HTTP_REFERER']) и текущий URL ($_SERVER['REQUEST_URI']).
  • Сохранение данных: Реализация логики сохранения собранных данных (IP, URL, реферер) в новую запись типа visit_log как в meta поля, так и частично в post_content для удобства просмотра.
  • Отображение в админке: Настройка списка записей visit_log в админке WordPress: добавление новых колонок (IP, URL, реферер), заполнение их данными. URL и реферер отображаются мелким шрифтом.
  • Детализация: Добавление метабокса на страницу редактирования записи для просмотра всех собранных данных в одном месте.
  • Оптимизация и фильтрация: Добавление проверок для исключения AJAX-запросов, админ-страниц, внутренних проверок (health-check) и (потенциально) ботов. Реализация ежедневной задачи (wp_cron) для автоматической очистки старых записей (например, старше 30 дней), чтобы база данных не переполнялась.

Плюсы решения

  • Интеграция с WordPress: Данные хранятся в структуре WordPress, легко просматриваются и управляются через админ-панель.
  • Простота реализации: Быстрое внедрение на существующий сайт.
  • Гибкость: Возможность настройки под конкретные задачи (например, изменение срока хранения).
  • Визуализация: Удобный список посещений с детализацией в админке.
  • Анонимность: Не использует cookies или localStorage, фиксирует посещения, а не конкретных пользователей (если не хранить clientId).

Минусы данного решения

  • Нагрузка на базу данных: Каждое посещение создаёт новые записи в базе данных (wp_posts, wp_postmeta). На сайтах с высоким трафиком (тысячи посещений в день) это может сильно нагружать сервер базы данных и увеличивать объём базы. Это ключевой недостаток при высоких нагрузках.
  • Не полноценная аналитика: Не заменяет собой Google Analytics или Яндекс.Метрику. Нет встроенной визуализации (графиков), сложнее анализировать данные в больших объёмах.
  • Конфиденциальность: Хранение IP-адресов может требовать соблюдения норм законодательства (например, 152-ФЗ в РФ).
  • Точность данных: Данные могут включать посещения ботов, если фильтрация настроена недостаточно точно. Также может не учитывать посетителей с динамическими IP.

UPD. Проведена модификация функции и визуальной составляющей:

Новые возможности:

  • Три вкладки: Visitors (по IP), Pages (по URL), Sources (по реферерам)
  • KPI-карточки: общее число визитов, уникальные посетители, bounce rate
  • Совмещённый график посещений по дням: общие визиты и уникальные посетители на одном поле
  • Топ-20 с цветовыми мини-барами для наглядного сравнения
  • Топ-3 строки подсвечены золотом/серебром/бронзой
  • Модальные окна с детализацией: для IP — список посещённых URL с количеством заходов, для реферера — список IP и целевых URL
  • Поиск внутри модальных окон
  • Копирование IP в буфер обмена по клику
  • Favicon для доменов-рефереров
  • Фильтр по диапазону дат с кнопкой сброса
  • Автоочистка логов старше 30 дней (cron)

Плюсы:

  • Вся аналитика внутри WordPress, без внешних сервисов
  • Наглядная визуализация: график, бары, цветовая иерархия
  • Быстрый доступ к детализации через модальные окна
  • Кастомный дизайн без стандартных таблиц widefat
  • Простая установка — один файл functions.php

Вывод

Эта доработка предоставляет простой способ фиксации посещений внутри WordPress. Она подходит для сайтов с умеренным трафиком, где важна интеграция с CMS и относительная простота отслеживания. Однако, для сайтов с высоким трафиком требуется дополнительная оценки влияния на производительность. Это скорее технический инструмент для мониторинга, чем полноценная система бизнес-аналитики.