Для многих сайтов на WordPress своевременное обновление плагинов — залог безопасности и стабильной работы. Однако не всегда администратор сайта успевает вовремя отследить появление новых версий плагинов. В этой статье мы рассмотрим, как реализовать автоматические уведомления о выходе обновлений плагинов, используя собственный код, а также познакомимся с полезными плагинами, которые расширяют возможности стандартных уведомлений WordPress.
Почему важны уведомления об обновлениях плагинов
Обновления плагинов часто содержат исправления безопасности, улучшения производительности и новые функции. Если не следить за ними, сайт может стать уязвимым к атакам или работать нестабильно. Стандартный механизм WordPress показывает уведомления в админке, но если вы не заходите регулярно, можно пропустить важное обновление.
Автоматические уведомления на email или в мессенджеры позволят быть в курсе изменений без постоянного мониторинга панели управления.
Как работает стандартная система обновлений плагинов в WordPress
WordPress периодически проверяет наличие обновлений для ядра, тем и плагинов. Результаты выводятся в разделе «Обновления» и на панели администратора. Однако оповещения ограничиваются только админкой и не отправляются автоматически на почту или другие каналы.
Поэтому часто администраторам приходится дополнительно устанавливать плагины или писать свой код для уведомлений.
Реализация уведомлений о обновлениях плагинов на email с помощью кода
Рассмотрим простой пример, как отправлять email-уведомление при обнаружении обновлений плагинов. Используем встроенные хуки WordPress для проверки обновлений.
Добавьте следующий код в functions.php вашей темы или в кастомный плагин:
function wpma_send_plugin_update_notification() {
// Получаем список доступных обновлений плагинов
$update_plugins = get_site_transient('update_plugins');
if (empty($update_plugins->response)) {
return; // Обновлений нет
}
$plugins_to_update = array_keys($update_plugins->response);
$plugin_names = [];
foreach ($plugins_to_update as $plugin_file) {
$plugin_data = get_plugin_data(WP_PLUGIN_DIR . '/' . $plugin_file);
$plugin_names[] = $plugin_data['Name'];
}
$to = get_option('admin_email');
$subject = 'Обновления плагинов доступны на сайте ' . get_bloginfo('name');
$message = "Доступны обновления для следующих плагинов:\n" . implode("\n", $plugin_names) . "\n
Пожалуйста, зайдите в админпанель для обновления.";
wp_mail($to, $subject, $message);
}
// Хук на wp_version_check срабатывает при проверке обновлений
add_action('wp_version_check', 'wpma_send_plugin_update_notification');
Этот код проверяет наличие обновлений плагинов и отправляет email на адрес администратора сайта. Хук wp_version_check запускается при плановом событии проверки обновлений.
Обратите внимание, что для работы функции get_plugin_data() необходимо подключить файл plugin.php из WordPress core, если эта функция не доступна.
Улучшение кода: отправка уведомлений раз в сутки
Чтобы не получать много писем, можно настроить отправку уведомления только один раз в сутки, если обновления не были установлены.
function wpma_schedule_plugin_update_notifications() {
if (!wp_next_scheduled('wpma_daily_plugin_update_notification')) {
wp_schedule_event(time(), 'daily', 'wpma_daily_plugin_update_notification');
}
}
add_action('wp', 'wpma_schedule_plugin_update_notifications');
function wpma_daily_check_and_notify() {
// Код из предыдущей функции с добавлением проверки опции
$update_plugins = get_site_transient('update_plugins');
if (empty($update_plugins->response)) {
return;
}
if (get_option('wpma_plugin_update_notified')) {
return; // Уже уведомляли
}
$plugins_to_update = array_keys($update_plugins->response);
$plugin_names = [];
foreach ($plugins_to_update as $plugin_file) {
$plugin_data = get_plugin_data(WP_PLUGIN_DIR . '/' . $plugin_file);
$plugin_names[] = $plugin_data['Name'];
}
$to = get_option('admin_email');
$subject = 'Обновления плагинов доступны на сайте ' . get_bloginfo('name');
$message = "Доступны обновления для следующих плагинов:\n" . implode("\n", $plugin_names) . "\nПожалуйста, зайдите в админпанель для обновления.";
wp_mail($to, $subject, $message);
update_option('wpma_plugin_update_notified', true);
}
add_action('wpma_daily_plugin_update_notification', 'wpma_daily_check_and_notify');
// Сброс уведомления при обновлении плагинов
function wpma_reset_notification_flag($upgrader_object, $options) {
if ($options['type'] === 'plugin' && $options['action'] === 'update') {
delete_option('wpma_plugin_update_notified');
}
}
add_action('upgrader_process_complete', 'wpma_reset_notification_flag', 10, 2);
Полезные плагины для расширенных уведомлений об обновлениях
Если не хочется писать код, можно использовать готовые решения. Вот несколько плагинов с расширенными функциями уведомлений:
- WP Updates Notifier — позволяет отправлять email с информацией о доступных обновлениях для ядра, плагинов и тем. Можно настроить частоту уведомлений и список получателей.
- Advanced Notifications — расширяет стандартные уведомления, поддерживает отправку на несколько адресов, а также уведомления о новых комментариях и других событиях.
- Clearfy Pro — комплексный плагин оптимизации, который в том числе умеет управлять уведомлениями об обновлениях и отключать лишние оповещения, чтобы не засорять админпанель.
Все эти плагины можно скачать и подробнее посмотреть на https://wpshop.ru/plugins/.
Интеграция уведомлений об обновлениях в мессенджеры
Для удобства многие хотят получать уведомления не только на email, но и в Telegram, Slack или другие сервисы. Для этого можно использовать сторонние библиотеки и API мессенджеров.
Пример отправки уведомления в Telegram через бота:
function wpma_send_telegram_update_notification($message) {
$bot_token = 'ВАШ_ТОКЕН_БОТА';
$chat_id = 'ID_ЧАТА';
$url = "https://api.telegram.org/bot$bot_token/sendMessage";
$args = [
'body' => [
'chat_id' => $chat_id,
'text' => $message,
],
];
wp_remote_post($url, $args);
}
// Использование внутри функции проверки обновлений
function wpma_notify_telegram_if_updates() {
$update_plugins = get_site_transient('update_plugins');
if (empty($update_plugins->response)) {
return;
}
$plugin_names = [];
foreach (array_keys($update_plugins->response) as $plugin_file) {
$plugin_data = get_plugin_data(WP_PLUGIN_DIR . '/' . $plugin_file);
$plugin_names[] = $plugin_data['Name'];
}
$message = "Доступны обновления для плагинов: " . implode(", ", $plugin_names);
wpma_send_telegram_update_notification($message);
}
Такой подход требует создания Telegram-бота и получения токена, но отлично подходит для оперативного информирования команды.
Выводы и рекомендации
Автоматические уведомления о доступных обновлениях плагинов — важный инструмент для поддержки безопасности и стабильности WordPress-сайта. Стандартный функционал можно расширить с помощью собственного кода, как показано выше, или использовать готовые плагины из WPShop.
Также рекомендуем комбинировать email-уведомления с интеграцией в мессенджеры для оперативного информирования и контроля над обновлениями.