Автоматическое обновление тем и плагинов в WordPress — важный шаг для поддержания безопасности и стабильности сайта. Хотя многие пользуются встроенными функциями автообновления, в некоторых случаях требуется более тонкая настройка и контроль. В этой статье мы рассмотрим, как с помощью кода настроить автоматическое обновление тем и плагинов, а также как управлять этим процессом гибко и надежно.
Почему важно автоматизировать обновления тем и плагинов в WordPress
WordPress постоянно обновляется для устранения уязвимостей, исправления багов и добавления новых функций. Темы и плагины — основные точки входа для атак, если они устарели. Ручное обновление требует времени и внимания, а пропуск обновлений может привести к взлому сайта.
Автоматизация обновлений помогает:
- Поддерживать сайт в актуальном состоянии без постоянного контроля.
- Минимизировать риски безопасности.
- Обеспечивать совместимость с последней версией WordPress.
Однако автоматизация должна быть гибкой и контролируемой, чтобы избежать непредвиденных сбоев.
Встроенные возможности WordPress для автообновлений
Начиная с версии 5.5, WordPress позволяет включать автообновления для тем и плагинов через админку. Также можно включить их с помощью фильтров в functions.php:
add_filter('auto_update_plugin', '__return_true');
add_filter('auto_update_theme', '__return_true');
Этот способ простой, но не дает гибкости, например, обновлять только определённые темы или плагины, или логировать процесс.
Настройка автоматического обновления с фильтрами по типу и названию
Чтобы реализовать более точный контроль, можно использовать фильтры WordPress и собственные функции с префиксом wp_host_. Например, обновлять плагины только из определённого списка:
function wp_host_auto_update_plugin( $update, $item ) {
$allowed_plugins = [
'contact-form-7/wp-contact-form-7.php',
'akismet/akismet.php'
];
if ( in_array( $item->plugin, $allowed_plugins ) ) {
return true;
}
return false;
}
add_filter( 'auto_update_plugin', 'wp_host_auto_update_plugin', 10, 2 );
Аналогично для тем:
function wp_host_auto_update_theme( $update, $theme ) {
$allowed_themes = [ 'twentytwentyone', 'twentytwentytwo' ];
if ( in_array( $theme->get_stylesheet(), $allowed_themes ) ) {
return true;
}
return false;
}
add_filter( 'auto_update_theme', 'wp_host_auto_update_theme', 10, 2 );
Такой подход позволяет исключить риск обновления неподходящих компонентов.
Логирование и уведомления об обновлениях
Часто полезно знать, какие темы и плагины обновились автоматически. Для этого можно добавить логирование в файл или отправку уведомлений на email.
Пример записи обновлений в лог-файл:
function wp_host_log_auto_update( $updater, $item ) {
$log_file = WP_CONTENT_DIR . '/auto-update-log.txt';
$type = ( $item instanceof WP_Theme ) ? 'Theme' : 'Plugin';
$name = ( $item instanceof WP_Theme ) ? $item->get('Name') : $item->Name;
$message = date('Y-m-d H:i:s') . " - Auto updated $type: $name\n";
file_put_contents( $log_file, $message, FILE_APPEND );
}
add_action( 'upgrader_process_complete', function( $upgrader, $options ) {
if ( $options['action'] == 'update' && in_array( $options['type'], [ 'plugin', 'theme' ] ) ) {
foreach ( $options['plugins'] ?? [] as $plugin ) {
$item = get_plugin_data( WP_PLUGIN_DIR . '/' . $plugin );
wp_host_log_auto_update( $upgrader, (object) $item );
}
if ( !empty( $options['themes'] ) ) {
foreach ( $options['themes'] as $theme_slug ) {
$theme = wp_get_theme( $theme_slug );
wp_host_log_auto_update( $upgrader, $theme );
}
}
}
}, 10, 2 );
Можно расширить этот код отправкой email администраторам или интеграцией с системами мониторинга.
Использование плагинов для управления автообновлениями
Если хочется удобный интерфейс для настройки автообновлений, можно рассмотреть следующие плагины:
- Clearfy Pro — расширенные настройки оптимизации и автообновлений.
- WPRemark — позволяет управлять обновлениями и уведомлениями.
Эти решения помогут быстро настроить обновления без программирования, но кодовый подход даёт максимальный контроль.
Практические советы и рекомендации
Перед включением автообновлений всегда делайте полную резервную копию сайта. Автоматические обновления могут вызвать несовместимости, особенно если используются кастомные или устаревшие темы и плагины.
Рекомендуется:
- Тестировать обновления на staging-сервере.
- Использовать фильтры для выбора только надежных компонентов для автообновлений.
- Настроить уведомления и логи, чтобы отслеживать процесс.
- Регулярно проверять совместимость после обновлений.
Такой подход обеспечит баланс между удобством и безопасностью.
Заключение
Автоматизация обновлений тем и плагинов в WordPress — простая и эффективная мера для поддержания безопасности сайта. Использование фильтров с собственными функциями позволяет настроить процесс гибко и контролируемо. Логирование и уведомления помогут отслеживать изменения и быстро реагировать на возможные проблемы.
Если вы хотите расширить возможности автообновлений, рекомендуем также ознакомиться с плагинами Clearfy Pro и WPRemark.