Автоматические уведомления о выходе новых обновлений для плагинов, тем или самой системы WordPress — важный элемент поддержки сайта в актуальном и безопасном состоянии. В этой статье рассмотрим, как реализовать собственную систему уведомлений, которая будет информировать администратора сайта о доступных обновлениях с помощью email и административных уведомлений. Такой подход полезен для сайтов с кастомными плагинами и темами, а также когда хочется гибко управлять процессом обновления и отслеживанием изменений.
Почему стандартные уведомления WordPress не всегда подходят
WordPress по умолчанию показывает уведомления в админке и может отправлять email о критических обновлениях, но этот механизм ограничен и не всегда удобен. Например:
- Нет возможности настроить уведомления только для определённых плагинов или тем.
- Отсутствует централизованный контроль за обновлениями с кастомными действиями.
- Нет возможности интегрировать уведомления с внешними сервисами или делать расширенную фильтрацию.
Поэтому создание собственной системы уведомлений — хорошее решение для опытных администраторов и разработчиков сайтов на WordPress.
Как реализовать проверку обновлений плагинов и тем через код
Для начала создадим функцию, которая будет проверять обновления доступных плагинов и тем, используя встроенные API WordPress. Для этого воспользуемся функциями get_site_transient('update_plugins') и get_site_transient('update_themes').
function wptest_check_updates() {
$plugin_updates = get_site_transient('update_plugins');
$theme_updates = get_site_transient('update_themes');
$updates = [
'plugins' => [],
'themes' => []
];
if (!empty($plugin_updates->response)) {
foreach ($plugin_updates->response as $plugin_file => $plugin_data) {
$updates['plugins'][] = [
'name' => $plugin_data->slug,
'new_version' => $plugin_data->new_version,
'plugin_file' => $plugin_file
];
}
}
if (!empty($theme_updates->response)) {
foreach ($theme_updates->response as $theme_slug => $theme_data) {
$updates['themes'][] = [
'name' => $theme_slug,
'new_version' => $theme_data->new_version
];
}
}
return $updates;
}Эта функция возвращает массив с плагинами и темами, для которых доступны обновления, включая новые версии.
Добавление уведомлений в админку WordPress
Теперь добавим в админку уведомления, которые будут показывать список обновлений. Для этого используем хук admin_notices.
function wptest_admin_update_notice() {
$updates = wptest_check_updates();
if (empty($updates['plugins']) && empty($updates['themes'])) {
return;
}
echo '<div class="notice notice-warning is-dismissible">';
echo '<p><strong>Доступны обновления для вашего сайта:</strong></p>';
echo '<ul>';
foreach ($updates['plugins'] as $plugin) {
echo '<li>Плагин: ' . esc_html($plugin['name']) . ' — новая версия: ' . esc_html($plugin['new_version']) . '</li>';
}
foreach ($updates['themes'] as $theme) {
echo '<li>Тема: ' . esc_html($theme['name']) . ' — новая версия: ' . esc_html($theme['new_version']) . '</li>';
}
echo '</ul>';
echo '</div>';
}
add_action('admin_notices', 'wptest_admin_update_notice');Так администратор всегда будет видеть в верхней части админки уведомление о доступных обновлениях и сможет быстро перейти к их установке.
Отправка email-уведомлений об обновлениях
Для автоматической отправки писем на email администратора, добавим функцию, которая будет запускаться по расписанию — например, раз в сутки. Для этого зарегистрируем cron-задачу.
function wptest_schedule_update_notifications() {
if (!wp_next_scheduled('wptest_send_update_email')) {
wp_schedule_event(time(), 'daily', 'wptest_send_update_email');
}
}
add_action('wp', 'wptest_schedule_update_notifications');
function wptest_send_update_email() {
$updates = wptest_check_updates();
if (empty($updates['plugins']) && empty($updates['themes'])) {
return;
}
$to = get_option('admin_email');
$subject = 'Доступны обновления для вашего сайта WordPress';
$message = "Здравствуйте!\n\nДоступны следующие обновления:\n";
foreach ($updates['plugins'] as $plugin) {
$message .= "Плагин: {$plugin['name']} — новая версия: {$plugin['new_version']}\n";
}
foreach ($updates['themes'] as $theme) {
$message .= "Тема: {$theme['name']} — новая версия: {$theme['new_version']}\n";
}
$message .= "\nПожалуйста, обновите их как можно скорее для безопасности и стабильности сайта.";
wp_mail($to, $subject, $message);
}
add_action('wptest_send_update_email', 'wptest_send_update_email');Теперь администратор будет ежедневно получать письмо с перечнем всех доступных обновлений. Это особенно полезно, если админка посещается нечасто.
Использование плагинов для расширения возможностей уведомлений
Если хочется не писать код с нуля, есть несколько плагинов, которые расширяют возможности уведомлений об обновлениях:
- WP Updates Notifier — плагин для отправки email о новых обновлениях плагинов, тем и ядра WordPress с настраиваемыми частотой и форматами писем.
- Advanced Automatic Updates — позволяет гибко управлять автоматическими обновлениями и уведомлениями.
- Clearfy Pro (https://wpshop.ru/clearfy-pro?utm_source=wptest.ru&utm_medium=article&utm_campaign=kak-sozdat-avtomaticheskie-uvedomleniya-o-obnovleniyah-v-wordpress) — набор оптимизаций, в том числе для уведомлений и управления обновлениями.
Эти плагины можно использовать как дополнение или замену кастомным решениям в зависимости от задач и уровня контроля.
Советы по безопасности и производительности
При реализации системы уведомлений важно учитывать:
- Не перегружайте сайт частыми запросами к API обновлений. Используйте транзиенты и кэш.
- Обязательно проверяйте и фильтруйте все данные для предотвращения XSS и других уязвимостей.
- Настраивайте частоту email-уведомлений так, чтобы не создавать спам и не пропустить важные обновления.
- Тестируйте уведомления в разных сценариях, чтобы избежать ложных срабатываний.
Правильный подход к уведомлениям сделает управление сайтом проще и безопаснее.