Обновление плагинов в WordPress — критически важный процесс для безопасности и стабильности сайта. Однако регулярное ручное обновление занимает время и создает риск забыть обновить важные компоненты. В этой статье мы разберём, как можно автоматизировать обновление плагинов WordPress с помощью собственного кода, без использования сторонних плагинов.
Почему стоит автоматизировать обновление плагинов WordPress
Автоматизация обновлений позволяет:
- Обеспечить своевременное получение новых функций и исправлений безопасности.
- Минимизировать риски уязвимостей из-за устаревших версий.
- Снизить нагрузку на администратора сайта, экономя время.
- Уменьшить вероятность человеческой ошибки при обновлениях.
Однако автоматизация должна быть реализована аккуратно, чтобы избежать конфликтов и сбоев на сайте.
Как включить автоматическое обновление плагинов через functions.php
Самый простой способ — добавить в файл functions.php активной темы следующий код, который позволит автоматически обновлять все плагины:
add_filter('auto_update_plugin', '__return_true');Этот фильтр WordPress включает автообновления для всех плагинов. Однако такой подход не даёт гибкости — все плагины обновляются без исключений, что не всегда удобно.
Гибкая настройка автообновлений плагинов
Если нужно обновлять только определённые плагины, можно реализовать фильтр с проверкой имени плагина:
function wpbook_auto_update_selected_plugins( $update, $item ) {
// Список плагинов для автообновления
$plugins_to_update = array(
'contact-form-7/wp-contact-form-7.php',
'akismet/akismet.php'
);
if ( in_array( $item->plugin, $plugins_to_update ) ) {
return true;
}
return false;
}
add_filter( 'auto_update_plugin', 'wpbook_auto_update_selected_plugins', 10, 2 );Здесь мы указываем массив плагинов, для которых разрешаем автообновления. Остальные будут обновляться вручную.
Отслеживание результатов обновления плагинов
Чтобы контролировать процесс обновления и получать уведомления, можно добавить логирование или отправку уведомлений по email.
Пример записи результатов обновления в файл лога:
function wpbook_log_plugin_update( $upgrader_object, $options ) {
if ( $options['action'] == 'update' && $options['type'] == 'plugin' ) {
$log_file = WP_CONTENT_DIR . '/plugin-update-log.txt';
$message = date('Y-m-d H:i:s') . ' - Обновлены плагины: ' . implode(', ', $options['plugins']) . "\n";
file_put_contents( $log_file, $message, FILE_APPEND );
}
}
add_action( 'upgrader_process_complete', 'wpbook_log_plugin_update', 10, 2 );Такой подход позволяет быстро увидеть, какие плагины и когда обновлялись.
Резервное копирование перед обновлением
Автоматические обновления несут риск ошибок и конфликтов, поэтому важно сделать резервную копию сайта перед обновлением плагинов.
Для автоматизации резервного копирования можно использовать плагин Backup WPBook — он позволяет создавать копии базы данных и файлов по расписанию. Или настроить собственный скрипт с помощью WP-Cron.
Советы по безопасности при автообновлениях
Несколько рекомендаций для безопасной автоматизации обновлений:
- Ограничьте автообновления проверенными плагинами.
- Всегда делайте резервные копии перед обновлением.
- Тестируйте обновления на тестовом сайте перед запуском на рабочем.
- Используйте уведомления о результатах обновлений.
Пример комплексного решения автоматизации обновлений плагинов
Ниже пример кода, который включает:
- Автоматическое обновление выбранных плагинов.
- Логирование обновлений.
- Отправку уведомления администратору.
function wpbook_auto_update_selected_plugins( $update, $item ) {
$plugins_to_update = array(
'contact-form-7/wp-contact-form-7.php',
'akismet/akismet.php'
);
return in_array( $item->plugin, $plugins_to_update );
}
add_filter( 'auto_update_plugin', 'wpbook_auto_update_selected_plugins', 10, 2 );
function wpbook_log_and_notify_plugin_update( $upgrader, $options ) {
if ( $options['action'] == 'update' && $options['type'] == 'plugin' ) {
$updated_plugins = implode(', ', $options['plugins']);
$message = date('Y-m-d H:i:s') . ' - Обновлены плагины: ' . $updated_plugins . "\n";
$log_file = WP_CONTENT_DIR . '/plugin-update-log.txt';
file_put_contents( $log_file, $message, FILE_APPEND );
// Отправка email администратору
$admin_email = get_option('admin_email');
wp_mail( $admin_email, 'Обновление плагинов WordPress', $message );
}
}
add_action( 'upgrader_process_complete', 'wpbook_log_and_notify_plugin_update', 10, 2 );Такой подход обеспечит контроль и безопасность при автоматическом обновлении плагинов.
Заключение
Автоматизация обновления плагинов в WordPress с помощью собственного кода — удобный и гибкий способ поддерживать сайт в актуальном и безопасном состоянии. Главное — внимательно подойти к выбору плагинов для автообновления и не забывать про резервное копирование.
Для более продвинутой автоматизации и удобного управления обновлениями можно рассмотреть плагины из каталога WPShop, например, Clearfy Pro, который оптимизирует работу сайта и помогает с безопасностью.