Обновления WordPress — важная часть поддержания сайта в безопасности и с актуальным функционалом. Однако постоянное ручное обновление ядра, плагинов и тем может отнимать много времени. В этой статье мы подробно рассмотрим, как автоматизировать процесс обновлений WordPress, сохраняя контроль над ними, и приведём примеры кода для тонкой настройки.
Зачем нужна автоматизация обновлений в WordPress
Обновления закрывают уязвимости, улучшают производительность и добавляют новые функции. Но автоматизация — это не просто удобство. В первую очередь она позволяет:
- Сократить время на обслуживание сайта.
- Минимизировать риски из-за устаревших компонентов.
- Обеспечить своевременную установку критических патчей безопасности.
Однако полностью доверять автоматике без контроля не стоит — иногда обновления могут вызвать несовместимости или ошибки. Поэтому важно настроить автоматизацию так, чтобы получать уведомления и иметь возможность исключить отдельные обновления.
Как работают автоматические обновления в WordPress
С версии 3.7 WordPress поддерживает автоматические обновления ядра для минорных версий по умолчанию. Это означает, что патчи безопасности и мелкие исправления устанавливаются автоматически. Однако обновления мажорных версий, плагинов и тем не включены в автоматический режим.
Для контроля автоматических обновлений WordPress использует фильтры и константы, которые можно задать в файле wp-config.php или в плагинах. Это позволяет гибко настраивать поведение.
Фильтры для управления обновлениями
Основные фильтры, с которыми стоит работать:
auto_update_core— управление обновлениями ядра.auto_update_plugin— автоматические обновления плагинов.auto_update_theme— автоматические обновления тем.
Используя эти фильтры, мы можем включать или отключать автообновления для отдельных компонентов.
Пример: включение автоматических обновлений для всех плагинов и тем
Вставьте следующий код в файл functions.php вашей темы или создайте небольшой плагин:
<?php
// Включить автообновления для всех плагинов
add_filter('auto_update_plugin', '__return_true');
// Включить автообновления для всех тем
add_filter('auto_update_theme', '__return_true');
?>Этот код активирует автоматическую установку обновлений для всех плагинов и тем, что удобно на сайтах с большим количеством компонентов.
Как исключить отдельные плагины или темы из автообновлений
Иногда необходимо отключить автообновления для некоторых плагинов, например, если они критичны и требуют тестирования перед обновлением. Для этого фильтры можно использовать с условием.
<?php
function wpkit_auto_update_plugins( $update, $item ) {
$exclude = array('akismet/akismet.php', 'contact-form-7/wp-contact-form-7.php'); // Список исключений
if ( in_array( $item->plugin, $exclude ) ) {
return false; // Отключаем автообновление для указанных плагинов
}
return true; // Включаем автообновление для остальных
}
add_filter( 'auto_update_plugin', 'wpkit_auto_update_plugins', 10, 2 );
?>В массиве $exclude указывайте пути плагинов относительно папки wp-content/plugins. Аналогично можно сделать и для тем, используя фильтр auto_update_theme.
Настройка автоматических обновлений через wp-config.php
Кроме фильтров, в файл wp-config.php можно добавить константы для управления обновлениями:
define('WP_AUTO_UPDATE_CORE', true);— включает автообновления ядра, включая мажорные версии.define('AUTOMATIC_UPDATER_DISABLED', false);— глобально включает или отключает все автоматические обновления.
Пример включения всех обновлений ядра:
define('WP_AUTO_UPDATE_CORE', true);Однако будьте осторожны с полной автоматизацией мажорных обновлений — они могут требовать дополнительной проверки совместимости.
Отслеживание и уведомления об обновлениях
Для контроля процесса автообновлений полезно иметь уведомления и логи. WordPress по умолчанию отправляет письма администратору о статусе обновлений, если указан корректный email в настройках.
Для более детального контроля можно использовать плагины, например:
- WP Activity Log — ведёт лог всех изменений, включая обновления.
- Easy Updates Manager — расширенные настройки автообновлений с удобным интерфейсом.
Эти инструменты помогут своевременно реагировать на возможные проблемы после обновлений.
Создание собственного плагина для гибкой автообновления на wpkit.ru
Чтобы полностью контролировать автоматизацию, полезно написать собственный плагин, который будет обрабатывать обновления с логированием и исключениями.
<?php
/*
Plugin Name: WPKit Auto Update Manager
Description: Управление автоматическими обновлениями с логированием и исключениями
Version: 1.0
Author: WPKit
*/
// Исключаем определённые плагины из автообновлений
function wpkit_auto_update_plugins( $update, $item ) {
$exclude = array('akismet/akismet.php');
if ( in_array( $item->plugin, $exclude ) ) {
return false;
}
return true;
}
add_filter( 'auto_update_plugin', 'wpkit_auto_update_plugins', 10, 2 );
// Включаем автообновления для тем
add_filter('auto_update_theme', '__return_true');
// Логируем успешные обновления
function wpkit_log_auto_update( $upgrader_object, $options ) {
if ( $options['action'] == 'update' && $options['type'] == 'plugin' && !empty($options['plugins']) ) {
foreach ( $options['plugins'] as $plugin ) {
error_log( "WPKit: Плагин обновлён - "$plugin );
}
}
}
add_action( 'upgrader_process_complete', 'wpkit_log_auto_update', 10, 2 );
?>Такой плагин позволит исключить из автообновлений критичные плагины, автоматически обновлять темы и вести журнал обновлений в файл error_log сервера.
Рекомендации по безопасности при автообновлениях
Автоматизация обновлений повышает безопасность, но требует дополнительных мер:
- Регулярно делайте резервные копии сайта перед обновлениями.
- Используйте staging-среду для проверки крупных обновлений.
- Настройте уведомления об ошибках обновлений.
- Контролируйте права доступа к файлам и папкам.
Соблюдение этих рекомендаций поможет избежать простоев и проблем после обновления.
Выводы по автоматизации обновлений WordPress
Автоматизация обновлений — удобный инструмент для экономии времени и повышения безопасности сайта. Используя встроенные фильтры, константы и собственные решения, можно настроить гибкий механизм обновлений под любые задачи.
Для wpkit.ru это особенно актуально, чтобы обеспечить стабильность работы и быстро реагировать на появление уязвимостей, не отвлекаясь на рутинные задачи.