Ведение сайта на WordPress требует постоянного контроля за состоянием и производительностью. Одной из важных задач является своевременное обнаружение и анализ ошибок, возникающих на сайте. В этой статье рассмотрим, как создать автоматический отчет по ошибкам WordPress с уведомлениями на почту, чтобы получать важные данные без лишних усилий.
Почему важен автоматический отчет об ошибках WordPress
Ошибки PHP, предупреждения или уведомления об устаревших функциях могут не отображаться на сайте, но при этом негативно влиять на работу и SEO. Ручной просмотр логов – трудоемкий процесс, а пропуск важных уведомлений приводит к затягиванию решения проблем.
Автоматизация сбора и отправки отчетов позволит оперативно реагировать на проблемы, выявлять системные сбои и улучшать качество сайта.
Варианты реализации автоматического отчета об ошибках
Использование плагинов для мониторинга и отчетности
Существуют специализированные плагины, которые собирают логи ошибок и отправляют уведомления. Например, Clearfy Pro имеет расширенные возможности по контролю ошибок и оптимизации, включая уведомления.
Другие популярные плагины:
- WP Log Viewer – удобно смотреть логи внутри админки;
- Error Log Monitor – отправляет письма при появлении новых ошибок;
- Query Monitor – помогает выявлять ошибки и замедления, хотя не отправляет автоматические отчеты.
Самостоятельная реализация сбора и отправки отчетов
Если вы хотите гибко настроить сбор ошибок и уведомления, можно реализовать собственное решение с использованием PHP и WP-Cron. Рассмотрим пример кода.
Код для создания автоматического отчета по ошибкам WordPress
Для начала создадим плагин, который будет записывать ошибки в отдельный файл и периодически отправлять его содержимое на указанный email.
<?php
/**
* Plugin Name: WPApp Ошибки - Автоматический отчет
* Description: Сбор ошибок PHP и отправка отчета на почту раз в сутки
* Version: 1.0
* Author: WPApp
*/
// Путь к файлу логов внутри wp-content
define('WPAPP_ERROR_LOG', WP_CONTENT_DIR . '/wpapp_error_log.log');
// Перенаправляем стандартный лог ошибок PHP
register_activation_hook(__FILE__, 'wpapp_activate_error_log');
function wpapp_activate_error_log() {
ini_set('log_errors', 1);
ini_set('error_log', WPAPP_ERROR_LOG);
}
// Планируем задачу отправки отчета раз в сутки
add_action('wpapp_send_error_report_hook', 'wpapp_send_error_report');
register_activation_hook(__FILE__, 'wpapp_schedule_error_report');
function wpapp_schedule_error_report() {
if (!wp_next_scheduled('wpapp_send_error_report_hook')) {
wp_schedule_event(time(), 'daily', 'wpapp_send_error_report_hook');
}
}
register_deactivation_hook(__FILE__, 'wpapp_clear_error_report_schedule');
function wpapp_clear_error_report_schedule() {
$timestamp = wp_next_scheduled('wpapp_send_error_report_hook');
if ($timestamp) {
wp_unschedule_event($timestamp, 'wpapp_send_error_report_hook');
}
}
// Функция отправки письма с отчетом
function wpapp_send_error_report() {
if (!file_exists(WPAPP_ERROR_LOG)) {
return;
}
$content = file_get_contents(WPAPP_ERROR_LOG);
if (empty($content)) {
return; // Нет новых ошибок
}
$admin_email = get_option('admin_email');
$subject = 'Отчет об ошибках WordPress за сутки';
$headers = array('Content-Type: text/plain; charset=UTF-8');
wp_mail($admin_email, $subject, $content, $headers);
// Очистка файла после отправки
file_put_contents(WPAPP_ERROR_LOG, '');
}
// Опционально: перехват ошибок и запись в лог вручную
set_error_handler('wpapp_error_handler');
function wpapp_error_handler($errno, $errstr, $errfile, $errline) {
$message = "[" . date('Y-m-d H:i:s') . "] Ошибка [$errno]: $errstr в $errfile на строке $errline\n";
error_log($message, 3, WPAPP_ERROR_LOG);
return false; // Передать обработку дальше
}
Настройка и расширение функциональности
Вы можете изменить период отправки, заменив 'daily' на 'twicedaily' или создать собственный интервал через фильтр cron_schedules. Для этого добавьте в плагин:
add_filter('cron_schedules', 'wpapp_custom_cron_schedules');
function wpapp_custom_cron_schedules($schedules) {
$schedules['every_three_hours'] = array(
'interval' => 10800, // 3 часа в секундах
'display' => 'Каждые 3 часа'
);
return $schedules;
}
И поменяйте wp_schedule_event на 'every_three_hours'.
Кроме того, можно настроить отправку отчета не только администратору, но и разработчикам или использовать сервисы для централизованного мониторинга — например, интеграцию с Sentry через плагины.
Заключение по теме отчетности об ошибках в WordPress
Автоматический сбор и отправка отчетов об ошибках помогает поддерживать стабильность сайта и вовремя реагировать на проблемы. Использование готовых плагинов экономит время, но собственные решения дают максимальную гибкость. Важно регулярно анализировать логи и обновлять систему оповещений под особенности вашего проекта.