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

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

Почему важен автоматический отчет о проблемах WordPress

Управление сайтом на WordPress требует постоянного контроля за состоянием системы. Часто ошибки на сайте остаются незамеченными, и только пользователи или поисковые роботы сигнализируют о проблемах. Автоматический сбор и отправка отчетов позволяет:

  • Выявлять ошибки PHP и предупреждения в логах сервера;
  • Отслеживать сбои в работе плагинов и тем;
  • Контролировать производительность (задержки, перегрузки);
  • Получать уведомления о пробоях в безопасности;
  • Экономить время на мониторинг вручную.

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

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

Плагин WP Health

WP Health — бесплатный и легкий плагин, который собирает информацию о состоянии сайта и высылает регулярные отчеты на почту. Он отслеживает ошибки PHP, статус базы данных, наличие обновлений и многое другое.

Для установки:

  1. Перейдите в админку WordPress → Плагины → Добавить новый;
  2. В поиске введите «WP Health» и установите плагин;
  3. Активируйте и настройте интервал отчетов в настройках плагина.

Плагин автоматически соберет логи и отправит их в удобном виде.

Плагин Query Monitor

Query Monitor — популярный инструмент для разработчиков, который также позволяет отслеживать ошибки, запросы к базе данных и хук-активности. Для автоматизации отчетов можно дополнительно использовать WP Crontrol и настраивать отправку данных на почту с помощью собственного кода.

Создаем свой скрипт для автоматического отчета в WordPress

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

Шаг 1. Парсим лог ошибок сервера

Сначала нужно убедиться, что ваш сервер сохраняет ошибки PHP в файл. Обычно это error_log или wp-content/debug.log при включенном режиме отладки WordPress.

Шаг 2. Функция для чтения файла лога и фильтрации новых ошибок

function wp1_get_new_errors_from_log($log_file, $last_check_time) {
    if (!file_exists($log_file)) {
        return [];
    }
    $lines = file($log_file);
    $new_errors = [];
    foreach ($lines as $line) {
        if (preg_match('/\[(.*?)\]/', $line, $matches)) {
            $time_str = $matches[1];
            $time = strtotime($time_str);
            if ($time && $time > $last_check_time) {
                $new_errors[] = $line;
            }
        }
    }
    return $new_errors;
}

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

Шаг 3. Отправка отчета на почту

function wp1_send_error_report() {
    $log_file = WP_CONTENT_DIR . '/debug.log';
    $last_check_time = get_option('wp1_last_error_check', 0);
    $errors = wp1_get_new_errors_from_log($log_file, $last_check_time);
    if (empty($errors)) {
        return;
    }
    $message = implode("\n", $errors);
    wp_mail('admin@example.com', 'Отчет о новых ошибках WordPress', $message);
    update_option('wp1_last_error_check', time());
}

Шаг 4. Планировщик задач WP-Cron

Чтобы запускать отчет ежедневно, зарегистрируем событие:

add_action('wp1_daily_error_report_event', 'wp1_send_error_report');
function wp1_schedule_error_report() {
    if (!wp_next_scheduled('wp1_daily_error_report_event')) {
        wp_schedule_event(time(), 'daily', 'wp1_daily_error_report_event');
    }
}
add_action('wp', 'wp1_schedule_error_report');

Теперь функция wp1_send_error_report будет вызываться каждый день и отправлять свежие ошибки.

Дополнительные советы по улучшению автоматических отчетов

Используйте плагин Clearfy Pro для оптимизации и контроля

Clearfy Pro помогает отключать ненужные функции WordPress, улучшать безопасность и контролировать логи. Это отличный помощник в тандеме с вашей системой отчетов.

Добавьте информацию о производительности

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

Отлавливайте ошибки JavaScript

Большинство ошибок в WordPress связаны не только с PHP, но и с JavaScript. Для сбора JS-ошибок используйте сервисы типа Sentry или интегрируйте простой скрипт, который отправляет ошибки на сервер.

Пример кода для сбора JS-ошибок и отправки на сервер

window.onerror = function(msg, url, lineNo, columnNo, error) {
    var data = {
        message: msg,
        script: url,
        line: lineNo,
        column: columnNo,
        stack: error ? error.stack : null
    };
    fetch('/wp-json/wp1/v1/js-error', {
        method: 'POST',
        headers: { 'Content-Type': 'application/json' },
        body: JSON.stringify(data)
    });
};

На стороне сервера нужно создать REST API эндпоинт для приема и хранения этих данных.

Заключение

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

Как создать автоматический импорт продуктов в WordPress с WPSHOP
19.12.2025
Создать свой шорткод в WordPress: практическое руководство с примерами кода
17.11.2025
Как удалить все черновики (draft) из базы данных WordPress
05.12.2025
Как удалить незаконченные заказы WooCommerce по дате и статусу
10.06.2026
Как отключить AJAX WooCommerce на отдельных страницах WordPress
22.05.2026