Автоматическое обновление плагинов в WordPress – важная задача для поддержания безопасности и стабильности сайта. Однако автообновления могут вызвать конфликты или поломки, если их запускать без контроля. В этой статье разберём, как правильно настроить автообновление плагинов, минимизируя риски, используя встроенные механизмы WordPress и собственный код.
Зачем нужна автоматизация обновлений плагинов в WordPressy
Плагины регулярно получают обновления, которые закрывают уязвимости, улучшают производительность и добавляют новые функции. Вручную проверять и обновлять каждый плагин неудобно, особенно если их много. Автообновление решает эту проблему, но без контроля может привести к сбоям на сайте.
Преимущества автообновлений:
- Повышенная безопасность: своевременные патчи закрывают уязвимости.
- Экономия времени: не нужно заходить в админку для обновления.
- Поддержание совместимости: плагины обновляются вместе с WordPress и темами.
Но также есть риски:
- Конфликты между плагинами или с темой.
- Непредвиденные ошибки после обновления.
- Потеря функционала, если обновление несовместимо.
Поэтому важно настроить автообновление так, чтобы оно было избирательным и с возможностью отката.
Встроенные возможности WordPress для автообновления плагинов
Начиная с версии 5.5, WordPress предоставляет возможность включать автообновления для отдельных плагинов прямо из админки, что значительно упростило задачу.
Чтобы включить автообновление для конкретного плагина, зайдите в меню Плагины → Установленные плагины и нажмите «Включить автообновление» напротив нужного плагина.
Этот способ подходит для большинства пользователей, но если требуется более тонкая настройка, можно использовать фильтры и хуки.
Использование фильтра auto_update_plugin для контроля обновлений
Хук auto_update_plugin позволяет программно разрешать или запрещать автообновления для каждого плагина. Например, включим автообновление только для плагина Contact Form 7:
add_filter('auto_update_plugin', 'wordpressy_auto_update_selected_plugins', 10, 2);
function wordpressy_auto_update_selected_plugins($update, $item) {
// ID плагина в формате папка/файл.php
$allowed_plugins = array(
'contact-form-7/wp-contact-form-7.php',
);
if (in_array($item->plugin, $allowed_plugins)) {
return true;
}
return false;
}
Такой подход даёт полный контроль над тем, какие плагины обновлять автоматически.
Реализация безопасного автообновления с резервным копированием
Чтобы минимизировать риски, полезно создавать резервную копию перед обновлением плагинов. Это позволит быстро откатиться, если что-то сломается.
Пример простой реализации через WP-Cron, которая перед обновлением делает бэкап базы и папки с плагинами:
add_action('wordpressy_daily_update_plugins', 'wordpressy_safe_update_plugins');
function wordpressy_safe_update_plugins() {
// 1. Создаём резервную копию базы данных
wordpressy_backup_database();
// 2. Создаём архив папки с плагинами
wordpressy_backup_plugins_folder();
// 3. Запускаем автообновление разрешённых плагинов
$plugins = get_plugins();
foreach($plugins as $plugin_file => $plugin_data) {
if (wordpressy_should_update_plugin($plugin_file)) {
wp_update_plugin($plugin_file);
}
}
}
function wordpressy_should_update_plugin($plugin_file) {
$allowed = array('contact-form-7/wp-contact-form-7.php');
return in_array($plugin_file, $allowed);
}
function wordpressy_backup_database() {
// Здесь можно вызвать mysqldump или использовать WP DB Export
// для простоты - пример вывода сообщения
error_log('Резервная копия базы данных создана');
}
function wordpressy_backup_plugins_folder() {
// Можно использовать ZipArchive для архивации wp-content/plugins
error_log('Резервная копия папки плагинов создана');
}
Для запуска задачи добавьте в файл функций или плагин следующий код, который планирует событие:
if (!wp_next_scheduled('wordpressy_daily_update_plugins')) {
wp_schedule_event(time(), 'daily', 'wordpressy_daily_update_plugins');
}
Такой подход позволит автоматизировать обновления и при этом иметь страховку в виде резервных копий.
Использование плагинов для управления автообновлениями с расширенными возможностями
Если вы не хотите писать код, можно использовать готовые плагины с гибкими настройками автообновлений:
- Easy Updates Manager – позволяет настраивать автообновление для ядра, плагинов, тем и локализаций с детальным контролем.
- WP Auto Update – простой плагин для включения и отключения автообновлений с возможностью логирования.
- ManageWP Worker – сервис для централизованного управления обновлениями множества сайтов, включая автообновления и резервные копии.
Эти инструменты позволят вам не только включать автообновления, но и получать уведомления, анализировать совместимость и автоматически делать бэкапы.
Пример настройки Easy Updates Manager
После установки и активации перейдите в Dashboard > Updates Options. Там вы можете включить автообновления для плагинов, исключить определённые плагины из обновления, задать расписание и параметры уведомлений.
Это наиболее простой и безопасный путь для большинства сайтов.
Отладка и мониторинг автообновлений
Важный этап – контроль работы автообновлений. WordPress ведёт логи обновлений, их можно посмотреть в wp-content/upgrade и через системные логи сервера.
Рекомендуется настроить уведомления на email при успешном или неудачном обновлении. Пример простого уведомления на почту после обновления плагина:
add_action('upgrader_process_complete', 'wordpressy_notify_on_plugin_update', 10, 2);
function wordpressy_notify_on_plugin_update($upgrader, $options) {
if ($options['type'] === 'plugin' && $options['action'] === 'update') {
$to = get_option('admin_email');
$subject = 'Обновление плагинов на сайте ' . get_bloginfo('name');
$message = 'Плагины успешно обновлены.';
wp_mail($to, $subject, $message);
}
}
Так вы всегда будете в курсе состояния обновлений и сможете быстро реагировать на проблемы.
Выводы по настройке автообновления плагинов в WordPressy
Автоматическое обновление плагинов – важный инструмент для поддержания безопасности и актуальности сайта. Но стоит подходить к нему с умом, используя:
- Встроенные возможности WordPress для включения автообновлений.
- Фильтры для избирательного обновления.
- Резервное копирование перед обновлением.
- Готовые плагины для расширенного управления.
- Мониторинг и уведомления о результатах обновлений.
Следуя этим рекомендациям, вы сможете настроить автообновления с минимальными рисками и максимальным комфортом.