Как устроить автоматический отчет о ошибках WordPress с уведомлениями на почту

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

Почему важно автоматизировать сбор ошибок PHP и WordPress

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

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

Настройка логирования ошибок в WordPress

Для начала убедимся, что WordPress и PHP настроены на логирование ошибок. В wp-config.php добавьте или проверьте следующие строки:

define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true); // ошибки пишутся в wp-content/debug.log
define('WP_DEBUG_DISPLAY', false); // ошибки не выводятся на экран

Это позволит собирать ошибки в файл wp-content/debug.log, не показывая их посетителям сайта.

Выбор места для логов и формата

Если нужен отдельный файл для логов ошибок, можно в php.ini или через код задать путь к файлу:

ini_set('error_log', WP_CONTENT_DIR . '/error-report.log');

Это позволит отделить ошибки WordPress от системных.

Создание функции wpco_send_error_report — отправка email с ошибками

Далее реализуем функцию, которая раз в сутки будет читать файл с ошибками, формировать отчет и отправлять его на указанный email, после чего очищать файл. Для этого используем WP-Cron.

Регистрация задачи в WP-Cron

add_action('wpco_daily_error_report', 'wpco_send_error_report');

if (!wp_next_scheduled('wpco_daily_error_report')) {
    wp_schedule_event(time(), 'daily', 'wpco_daily_error_report');
}

Основная функция отправки отчета

function wpco_send_error_report() {
    $log_file = WP_CONTENT_DIR . '/debug.log';
    if (!file_exists($log_file)) {
        return; // Файл не найден
    }
    $log_content = file_get_contents($log_file);
    if (empty($log_content)) {
        return; // Нет новых ошибок
    }

    $to = 'admin@example.com'; // Замените на ваш email
    $subject = 'Ежедневный отчет об ошибках WordPress';
    $message = "Здравствуйте,\n\nВот отчет об ошибках, возникших за последние сутки:\n\n" . $log_content;
    $headers = ['Content-Type: text/plain; charset=UTF-8'];

    wp_mail($to, $subject, $message, $headers);

    // Очистка файла после отправки
    file_put_contents($log_file, '');
}

Улучшение: фильтрация и форматирование ошибок

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

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

Пример выделения ошибок за последние 24 часа

function wpco_get_recent_errors($log_file) {
    $lines = file($log_file);
    $filtered = [];
    $now = time();
    foreach ($lines as $line) {
        if (preg_match('/\[(.*?)\]/', $line, $matches)) {
            $date_str = $matches[1];
            $timestamp = strtotime($date_str);
            if ($timestamp && ($now - $timestamp) <= 86400) { // 24 часа
                $filtered[] = $line;
            }
        }
    }
    return implode('', $filtered);
}

Далее вместо полного содержимого файла используйте wpco_get_recent_errors($log_file) для формирования отчета.

Плагины для расширенного логирования и отчетности

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

  • WP Activity Log — подробный аудит всех действий на сайте, включая ошибки.
  • Error Log Monitor — показывает последние ошибки PHP прямо в админке, с возможностью отправки уведомлений.
  • Clearfy Pro — оптимизация и безопасность, включая расширенные настройки логирования ошибок.

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

Как интегрировать отправку отчетов в WP-Cron и улучшить надежность

WP-Cron зависит от посещаемости сайта. Для сайтов с низкой посещаемостью можно настроить системный cron на сервере, который будет вызывать wp-cron.php регулярно:

* * * * * wget -q -O - https://example.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1

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

Выводы и рекомендации

Автоматический отчет об ошибках — мощный инструмент контроля состояния сайта. Даже базовая реализация с чтением debug.log и отправкой email поможет быстро получать информацию о проблемах.

Для сложных проектов полезно использовать готовые плагины с расширенными возможностями, например, Clearfy Pro.

Обязательно настроите правильные права доступа к файлам логов и защищайте email от спама.

Как сделать динамические шорткоды в WordPress: подробное руководство
02.11.2025
Как отображать последних активных пользователей WordPress
25.01.2026
Оптимизация базы данных WordPress: практические советы и примеры
06.11.2025
Как создать собственный тип записи в WordPress: подробное руководство с примерами
29.11.2025
Как создать автоматический бэкап WordPress с помощью кода и плагинов
01.01.2026