Как регистрировать собственные события в WordPress для мониторинга

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

Что такое собственные события в WordPress и зачем они нужны

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

  • Фиксировать важные для вас действия;
  • Создавать отчёты по специфичным событиям;
  • Подключать внешние системы мониторинга и аналитики;
  • Автоматизировать реакции на определённые события.

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

Регистрация и вызов собственных событий через do_action и add_action

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

Пример регистрации события с префиксом wpmonitor_:

function wpmonitor_do_custom_event($user_id, $event_data) {
    do_action('wpmonitor_custom_event', $user_id, $event_data);
}

Подписка на событие:

add_action('wpmonitor_custom_event', 'wpmonitor_handle_custom_event', 10, 2);
function wpmonitor_handle_custom_event($user_id, $event_data) {
    // Здесь можно записать событие в лог или базу данных
    error_log("Custom event for user {$user_id}: " . print_r($event_data, true));
}

Вызов события в нужном месте кода:

wpmonitor_do_custom_event(get_current_user_id(), ['action' => 'viewed_page', 'page_id' => 123]);

Такой подход гибкий и хорошо интегрируется с остальной системой WordPress.

Запись собственных событий в базу данных для последующего анализа

Для более серьёзного мониторинга целесообразно сохранять события в отдельной таблице базы данных. Это позволит строить отчёты и использовать сложные запросы.

Создадим таблицу при активации плагина или темы:

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

    $sql = "CREATE TABLE $table_name (
      id bigint(20) unsigned NOT NULL AUTO_INCREMENT,
      event_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
      user_id bigint(20) unsigned NOT NULL,
      event_name varchar(100) NOT NULL,
      event_data text NOT NULL,
      PRIMARY KEY  (id)
    ) $charset_collate;";

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

Функция записи события в таблицу:

function wpmonitor_log_event($user_id, $event_name, $event_data) {
    global $wpdb;
    $table_name = $wpdb->prefix . 'wpmonitor_events';
    $wpdb->insert(
        $table_name,
        [
            'user_id' => $user_id,
            'event_name' => $event_name,
            'event_data' => maybe_serialize($event_data),
            'event_time' => current_time('mysql', 1),
        ]
    );
}

Интегрируем запись в обработчик события:

add_action('wpmonitor_custom_event', function($user_id, $event_data) {
    wpmonitor_log_event($user_id, 'custom_event', $event_data);
}, 10, 2);

Использование плагинов для расширенного мониторинга событий

Если не хочется писать всё с нуля, можно использовать плагины с расширенными возможностями логирования и мониторинга. Вот несколько полезных:

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

Эти решения можно дополнить своими собственными событиями для максимально точного мониторинга.

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

При внедрении собственного мониторинга учитывайте следующие моменты:

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

Например, для асинхронной записи событий можно использовать WP-Cron или сторонние очереди.

Пример интеграции собственного события с WP-Cron для отложенной обработки

Чтобы не нагружать сайт при записи событий, можно отложить их обработку. Пример:

function wpmonitor_schedule_event_processing($user_id, $event_data) {
    wp_schedule_single_event(time() + 60, 'wpmonitor_process_event_cron', [$user_id, $event_data]);
}

add_action('wpmonitor_process_event_cron', 'wpmonitor_handle_cron_event', 10, 2);
function wpmonitor_handle_cron_event($user_id, $event_data) {
    wpmonitor_log_event($user_id, 'cron_custom_event', $event_data);
}

// Вызов
wpmonitor_schedule_event_processing(get_current_user_id(), ['action' => 'delayed_event']);

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

WooCommerce: решение проблемы не сохраняются изменения в товарах
03.06.2026
Автоматическое создание резервных копий WordPress: настройка и лучшие плагины
30.11.2025
Как отключить Emoji в WordPress для ускорения сайта
07.02.2026
Как избежать размытых изображений в WordPress: практическое руководство
29.01.2026
Как создать автоматический мониторинг сайта на WordPress для отслеживания доступности и ошибок
16.12.2025