Почему важно автоматизировать обновления в WordPress
Обновление плагинов и тем — один из ключевых процессов для безопасности и стабильности сайта на WordPress. Ручное обновление занимает время, а забывчивость или неаккуратность могут привести к уязвимостям или конфликтам. Автоматизация этого процесса позволяет поддерживать сайт в актуальном состоянии без постоянного контроля, снижая риски и повышая производительность.
Однако автоматические обновления требуют аккуратности: нужно контролировать, чтобы не сломать функциональность, и иметь возможность быстро откатить изменения в случае проблем.
В этой статье мы рассмотрим, как программно включить автоматические обновления для плагинов и тем, а также как управлять этим процессом выборочно с помощью фильтров WordPress.
Включение автоматических обновлений для всех плагинов и тем
WordPress с версии 5.5 поддерживает автоматические обновления плагинов и тем из коробки, но по умолчанию они не всегда включены для всех элементов. Для глобального включения можно добавить следующий код в файл functions.php вашей темы или в кастомный плагин:
add_filter('auto_update_plugin', '__return_true');
add_filter('auto_update_theme', '__return_true');Этот код активирует автоматическое обновление всех плагинов и тем без исключений. Это удобно, если у вас много плагинов и вы доверяете их разработчикам.
Однако такой подход не всегда оптимален, особенно если на сайте есть нестандартные или кастомные решения, которые могут сломаться после обновления.
Управление автоматическими обновлениями выборочно
Чтобы контролировать, какие именно плагины и темы обновляются автоматически, можно использовать более сложный фильтр с проверкой имени плагина или темы.
Пример для плагинов:
function wpdigest_auto_update_selected_plugins( $update, $item ) {
$plugins_to_update = array(
'woocommerce/woocommerce.php',
'contact-form-7/wp-contact-form-7.php',
);
if ( in_array( $item->plugin, $plugins_to_update ) ) {
return true; // включаем автообновление для выбранных
}
return false; // отключаем для остальных
}
add_filter( 'auto_update_plugin', 'wpdigest_auto_update_selected_plugins', 10, 2 );В этом примере мы включаем автоматическое обновление только для WooCommerce и Contact Form 7. Список можно расширять по мере необходимости.
Для тем аналогично:
function wpdigest_auto_update_selected_themes( $update, $theme ) {
$themes_to_update = array('twentytwentyone', 'astra');
if ( in_array( $theme->get_stylesheet(), $themes_to_update ) ) {
return true;
}
return false;
}
add_filter( 'auto_update_theme', 'wpdigest_auto_update_selected_themes', 10, 2 );Как отследить результаты автоматических обновлений
Важно понимать, что в случае проблем нужно быстро реагировать. Для этого можно подключить логирование обновлений. Например, с помощью хуков upgrader_process_complete.
function wpdigest_log_auto_update( $upgrader_object, $options ) {
if ( $options['action'] == 'update' && ( $options['type'] == 'plugin' || $options['type'] == 'theme' ) ) {
error_log( 'Автообновление: ' . $options['type'] . ' - ' . print_r( $options, true ) );
}
}
add_action( 'upgrader_process_complete', 'wpdigest_log_auto_update', 10, 2 );<Этот код записывает информацию об обновлениях в лог ошибок сервера, что удобно для диагностики.
Рекомендации по безопасности и стабильности при автоматических обновлениях
1. Резервное копирование. Перед включением автоматических обновлений обязательно настройте регулярное резервное копирование сайта и базы данных. Если обновление сломает сайт, вы сможете быстро восстановить работоспособность.
2. Тестирование на локальной копии. Рекомендуется сначала протестировать обновления на тестовом стенде, особенно если сайт использует кастомные темы и плагины.
3. Оповещения. Используйте плагины типа Clearfy Pro или Expert Review с https://wpshop.ru/ для мониторинга и уведомлений об обновлениях и ошибках.
Автоматизация с помощью WP-Cron и кастомных скриптов
Если стандартные фильтры вас не устраивают, можно создать собственный планировщик обновлений через WP-Cron.
function wpdigest_schedule_plugin_update() {
if ( ! wp_next_scheduled( 'wpdigest_auto_update_plugins_hook' ) ) {
wp_schedule_event( time(), 'daily', 'wpdigest_auto_update_plugins_hook' );
}
}
add_action( 'wp', 'wpdigest_schedule_plugin_update' );
function wpdigest_auto_update_plugins_function() {
include_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
$upgrader = new Plugin_Upgrader();
$plugins_to_update = array(
'woocommerce/woocommerce.php',
'contact-form-7/wp-contact-form-7.php',
);
foreach ( $plugins_to_update as $plugin ) {
$upgrader->upgrade( $plugin );
}
}
add_action( 'wpdigest_auto_update_plugins_hook', 'wpdigest_auto_update_plugins_function' );Такой подход дает полный контроль и позволяет запускать обновления по расписанию с кастомными условиями.
Выводы
Автоматизация обновлений плагинов и тем в WordPress — мощный инструмент повышения безопасности и удобства поддержки сайта. Используя фильтры auto_update_plugin и auto_update_theme, а также кастомные задачи WP-Cron, вы сможете гибко управлять процессом. Обязательно сочетайте автоматизацию с резервным копированием и мониторингом, чтобы избежать потерь и простоев.