Ведение сайта на WordPress часто сопряжено с необходимостью отслеживания и устранения ошибок, возникающих в работе плагинов, тем и самого движка. Особенно важно своевременно получать информацию о критических сбоях, чтобы минимизировать простой сайта и улучшить пользовательский опыт. В этой статье подробно рассмотрим, как создать автоматический отчет по ошибкам в WordPress с помощью плагинов и кастомного кода.
Почему важен автоматический отчет об ошибках в WordPress
В стандартной поставке WordPress ведется лог ошибок PHP, но он не всегда доступен и удобен для оперативного анализа. Автоматический отчет об ошибках позволяет:
- Получать уведомления о критических сбоях на почту или в мессенджеры;
- Сохранять подробную информацию об ошибках для анализа;
- Ускорять процесс исправления багов и предотвращать повторные проблемы;
- Выявлять конфликты плагинов и тем.
Это особенно актуально для сайтов с большим трафиком и сложной инфраструктурой.
Использование плагина Error Log Monitor для отслеживания ошибок
Один из популярных и простых в использовании плагинов для мониторинга ошибок — Error Log Monitor. Он позволяет просматривать последние ошибки PHP прямо из админки и настраивать уведомления по email.
Основные возможности:
- Автоматический мониторинг PHP error_log;
- Отправка уведомлений при появлении новых ошибок;
- Простой интерфейс в админке;
- Поддержка кастомных фильтров.
Чтобы начать работу, достаточно установить и активировать плагин, а затем в настройках указать email для уведомлений.
Пример настройки уведомлений Error Log Monitor
Перейдите в меню Настройки > Error Log Monitor и включите опцию отправки писем. Укажите почту администратора и настройте частоту отправки.
Если на вашем хостинге error_log не ведется в стандартном месте, укажите путь к файлу вручную.
Создание кастомного плагина для сбора и отправки отчетов об ошибках
Если нужны более гибкие настройки или интеграция с внешними сервисами, можно создать собственный плагин, который будет собирать ошибки и формировать отчеты.
Основной принцип — перехватывать ошибки с помощью функции set_error_handler, записывать их в отдельный файл и периодически отправлять отчет по email или в Slack.
Пример кода простого плагина для логирования ошибок и отправки отчета
<?php
/*
Plugin Name: WPReboot Error Reporter
Description: Логирование ошибок PHP и отправка отчета по email
Version: 1.0
Author: WPReboot
*/
register_activation_hook(__FILE__, 'wpreboot_error_reporter_activate');
register_deactivation_hook(__FILE__, 'wpreboot_error_reporter_deactivate');
function wpreboot_error_reporter_activate() {
if (!wp_next_scheduled('wpreboot_send_error_report')) {
wp_schedule_event(time(), 'hourly', 'wpreboot_send_error_report');
}
}
function wpreboot_error_reporter_deactivate() {
wp_clear_scheduled_hook('wpreboot_send_error_report');
}
// Путь к файлу логов
define('WPREBOOT_ERROR_LOG', WP_CONTENT_DIR . '/wpreboot-error.log');
// Обработчик ошибок
function wpreboot_error_handler($errno, $errstr, $errfile, $errline) {
$date = date('Y-m-d H:i:s');
$message = "[$date] Error: [$errno] $errstr in $errfile on line $errline\n";
error_log($message, 3, WPREBOOT_ERROR_LOG);
return false; // Передать обработку дальше
}
set_error_handler('wpreboot_error_handler');
// Функция отправки отчета
function wpreboot_send_error_report() {
if (!file_exists(WPREBOOT_ERROR_LOG)) {
return;
}
$content = file_get_contents(WPREBOOT_ERROR_LOG);
if (empty($content)) {
return;
}
$to = get_option('admin_email');
$subject = 'Отчет об ошибках WordPress с сайта ' . get_bloginfo('name');
$headers = array('Content-Type: text/plain; charset=UTF-8');
wp_mail($to, $subject, $content, $headers);
// Очистить лог после отправки
file_put_contents(WPREBOOT_ERROR_LOG, '');
}
add_action('wpreboot_send_error_report', 'wpreboot_send_error_report');
Этот код создает плагин, который перехватывает ошибки PHP, записывает их в файл wpreboot-error.log в папке wp-content и раз в час отправляет отчет на email администратора.
Вы можете изменить периодичность, например, на ежедневную, используя wp_schedule_event(time(), 'daily', 'wpreboot_send_error_report');.
Интеграция с сервисом Clearfy Pro для расширенного мониторинга
Если вы используете плагин Clearfy Pro, его функции помогут оптимизировать логи и повысить стабильность сайта. В Clearfy Pro есть модули для управления логами, отключения ненужных скриптов и мониторинга ошибок.
Применение Clearfy Pro в связке с собственным плагином позволит:
- Автоматически очищать логи и предотвращать их разрастание;
- Отключать неиспользуемые хуки и фильтры, которые могут вызывать ошибки;
- Получать расширенные отчеты о состоянии сайта.
Советы по работе с отчетами и устранению ошибок
После настройки автоматического сбора ошибок важно правильно использовать получаемые данные:
- Регулярно анализируйте логи и выявляйте повторяющиеся проблемы;
- При обнаружении ошибок, связанных с конкретным плагином, временно отключайте его и проверяйте конфликт;
- Используйте
WP_DEBUG_LOGдля дополнительного логирования в режиме разработки; - Комбинируйте автоматические отчеты с инструментами мониторинга сервера, например, New Relic или Sentry.
В случае, если вы хотите получать отчеты в мессенджеры, можно расширить плагин, добавив отправку webhook в Slack или Telegram, используя соответствующие API.
Пример отправки уведомления в Telegram через бот
function wpreboot_send_telegram_notification($message) {
$bot_token = 'ВАШ_ТОКЕН_БОТА';
$chat_id = 'ВАШ_CHAT_ID';
$url = "https://api.telegram.org/bot$bot_token/sendMessage";
$args = array(
'body' => json_encode(array(
'chat_id' => $chat_id,
'text' => $message,
)),
'headers' => array('Content-Type' => 'application/json'),
);
wp_remote_post($url, $args);
}
// Вызов функции при отправке отчета
// wpreboot_send_telegram_notification($content);Подставьте свои данные и интегрируйте отправку в функцию отчетности.
Заключение
Автоматический отчет об ошибках — ключевой инструмент для поддержки и развития сайта на WordPress. Используйте готовые решения вроде Error Log Monitor для быстрого старта и расширяйте функционал собственными плагинами под свои задачи. Интеграция с такими плагинами, как Clearfy Pro, поможет держать сайт в оптимальном состоянии и своевременно реагировать на проблемы.