Обновления WordPress, тем и плагинов — важный элемент безопасности и стабильности сайта. Но часто вебмастера не успевают вовремя реагировать на новые версии, что может привести к уязвимостям и сбоям. В этой статье мы подробно разберём, как организовать автоматическую систему уведомлений о доступных обновлениях на вашем сайте WordPress.
Почему важны уведомления о обновлениях WordPress
Обновления приносят не только новые функции, но и исправления багов, а главное — закрывают дыры в безопасности. Если вовремя не обновлять ядро, плагины или темы, то сайт может подвергнуться атакам, потерям данных или снизить производительность.
Ручная проверка обновлений — процесс трудоёмкий и неудобный, особенно если у вас несколько сайтов. Автоматические уведомления позволяют быстро получать важную информацию и принимать меры.
Обзор способов получения уведомлений
1. Встроенные средства WordPress
WordPress по умолчанию показывает уведомления об обновлениях в админке, но это не всегда удобно — надо заходить и проверять. Почтовые уведомления о критических обновлениях приходят редко и не всегда.
2. Использование плагинов для уведомлений
Существует несколько плагинов, которые расширяют функционал уведомлений:
- WP Updates Notifier: позволяет получать письма с информацией о новых версиях ядра, плагинов и тем. Настраивается периодичность отправки, можно фильтровать уведомления.
- Easy Updates Manager: не только уведомляет, но и позволяет управлять автоматическими обновлениями, включая гибкие настройки.
- Clearfy Pro: на официальном сайте предлагает функции оптимизации и контроля обновлений с возможностью уведомлений.
Эти плагины просты в установке и настройке, но если нужно более тонко кастомизировать уведомления, лучше написать свой код.
Как написать собственный плагин для уведомлений об обновлениях
Давайте создадим минимальный пример, который будет отправлять письмо администратору, если есть доступные обновления ядра, плагинов или тем.
Основная логика
WordPress кэширует данные об обновлениях в transient-переменных. Мы можем получить их с помощью функций:
get_site_transient('update_core')— обновления ядра;get_site_transient('update_plugins')— обновления плагинов;get_site_transient('update_themes')— обновления тем.
Проверим эти данные и, если есть обновления, отправим письмо.
Пример кода плагина
<?php
/*
Plugin Name: WPStudy Update Notifier
Description: Отправляет уведомления о доступных обновлениях WordPress
Version: 1.0
Author: WPStudy.ru
*/
function wpstudy_send_update_notification() {
if ( ! current_user_can('update_core') ) {
return; // Проверка прав
}
$core_updates = get_site_transient('update_core');
$plugin_updates = get_site_transient('update_plugins');
$theme_updates = get_site_transient('update_themes');
$has_updates = false;
$message = "Доступны обновления на вашем сайте:\n\n";
if ( ! empty($core_updates->updates) ) {
$has_updates = true;
$message .= "- Обновление ядра WordPress\n";
}
if ( ! empty($plugin_updates->response) ) {
$has_updates = true;
$message .= "- Обновления плагинов:\n";
foreach ( $plugin_updates->response as $plugin_file => $plugin_data ) {
$message .= " * " . $plugin_data->slug . " (" . $plugin_data->new_version . ")\n";
}
}
if ( ! empty($theme_updates->response) ) {
$has_updates = true;
$message .= "- Обновления тем:\n";
foreach ( $theme_updates->response as $theme_slug => $theme_data ) {
$message .= " * " . $theme_slug . " (" . $theme_data->new_version . ")\n";
}
}
if ( $has_updates ) {
$admin_email = get_option('admin_email');
wp_mail($admin_email, 'Уведомление о обновлениях WordPress', $message);
}
}
// Запускаем проверку раз в сутки
if ( ! wp_next_scheduled('wpstudy_daily_update_check') ) {
wp_schedule_event(time(), 'daily', 'wpstudy_daily_update_check');
}
add_action('wpstudy_daily_update_check', 'wpstudy_send_update_notification');
?>Этот код создаст фоновое задание, которое каждый день проверяет обновления и отправляет письмо администратору, если они есть.
Как расширить функционал уведомлений
Настройка получателей и периодичности
В коде выше уведомления отправляются только на основной email администратора. Чтобы добавить возможность указывать несколько адресов, можно использовать опции плагина, например, через add_option и страницу настроек.
Для более гибкого управления периодичностью можно добавить настройки cron, позволяющие задавать интервал: ежедневно, еженедельно, раз в несколько часов.
Добавление ссылки на обновления в письме
Чтобы упростить работу администратора, в письме можно добавить прямые ссылки на страницы обновлений в админке:
$message .= "\nПерейти к обновлениям: " . admin_url('update-core.php') . "\n";Поддержка HTML-писем
Для удобства восприятия можно отправлять HTML-письма, используя заголовки и форматирование. WordPress позволяет передавать HTML в wp_mail, если указать заголовки:
$headers = array('Content-Type: text/html; charset=UTF-8');
wp_mail($admin_email, 'Уведомление о обновлениях WordPress', $html_message, $headers);Другие полезные советы по работе с обновлениями
Использование плагина Expert Review для контроля качества обновлений
Для сайтов с большим количеством плагинов и тем полезно применять инструменты, которые анализируют совместимость обновлений и предупреждают о возможных конфликтах. Например, плагин Expert Review помогает управлять качеством обновлений и снижает риски.
Резервное копирование перед обновлениями
Перед тем как обновлять ядро, плагины и темы, обязательно делайте резервные копии. Для автоматизации можно использовать плагин WPStudy Backup (или любой другой из проверенных решений), который позволит быстро восстановить сайт в случае проблем.
Мониторинг состояния сайта после обновлений
После обновлений важно проверять работу сайта. Для этого можно настроить уведомления о ошибках PHP, использовать сервисы мониторинга и логирования. Если хотите, можно реализовать автоматизированный скрипт, который тестирует ключевые страницы и присылает отчёт.