Как добавить автоматическое обновление плагинов в WordPress без сторонних библиотек

Автоматическое обновление плагинов в WordPress — важная задача для поддержания безопасности и стабильности сайта. Многие используют сторонние решения и плагины, но в некоторых случаях хочется сделать это самостоятельно, без подключения дополнительных библиотек и сервисов. В этой статье мы подробно разберем, как реализовать автоматическое обновление плагинов с помощью встроенных возможностей WordPress и минимального количества кода.

Почему важно автоматизировать обновление плагинов

Плагины — одна из самых частых причин уязвимостей и сбоев на WordPress-сайтах. Обновления часто содержат исправления безопасности, улучшения производительности и новые функции. Ручное обновление требует времени и внимания, особенно если плагинов много. Автоматизация позволяет:

  • Сократить время на администрирование сайта;
  • Обеспечить своевременное исправление уязвимостей;
  • Минимизировать риски, связанные с устаревшими версиями;
  • Поддерживать стабильную работу сайта без простоев.

Но при этом важно контролировать процесс, чтобы избежать автоматических обновлений, которые могут сломать сайт.

Встроенные возможности WordPress для автоматического обновления

С версии 5.5 WordPress получил встроенную поддержку автоматических обновлений для плагинов и тем. Управлять этим можно через админку или код, используя фильтры. Рассмотрим, как включить автоматическое обновление для всех плагинов или выборочных.

Включение автоматических обновлений для всех плагинов

Чтобы включить автоматические обновления для всех плагинов, добавьте следующий код в файл functions.php вашей темы или в собственный плагин:

add_filter('auto_update_plugin', '__return_true');

Этот фильтр сообщает WordPress, что все плагины можно обновлять автоматически. Однако такой подход не всегда желателен, особенно если некоторые плагины могут конфликтовать с вашим сайтом.

Выборочное автоматическое обновление плагинов

Для более тонкого контроля можно указать, какие плагины обновлять автоматически, а какие нет. Для этого используйте функцию с проверкой имени плагина:

function wpclass_auto_update_selected_plugins( $update, $item ) {
    // Список плагинов, которые нужно обновлять автоматически
    $plugins_to_update = [
        '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', 'wpclass_auto_update_selected_plugins', 10, 2 );

В этом примере автоматически обновятся только Contact Form 7 и Akismet. Обратите внимание, что в массиве указываются пути к основным файлам плагинов.

Как добавить уведомления и логирование обновлений

Автоматизация полезна, но нужно знать, когда обновления проходят успешно, а когда — нет. Для этого добавим логирование и оповещения по email.

Логирование процесса обновления

WordPress генерирует хуки, связанные с обновлениями, которые можно использовать для записи логов. Пример записи логов в файл wp-content/plugins/wpclass-update-log.log:

function wpclass_log_plugin_update( $upgrader_object, $options ) {
    if ( $options['action'] == 'update' && $options['type'] == 'plugin' ) {
        $log_file = WP_CONTENT_DIR . '/plugins/wpclass-update-log.log';
        foreach ( $options['plugins'] as $plugin ) {
            $message = date('Y-m-d H:i:s') . " - Plugin updated: {$plugin}\n";
            error_log( $message, 3, $log_file );
        }
    }
}
add_action( 'upgrader_process_complete', 'wpclass_log_plugin_update', 10, 2 );
<

Такой файл поможет отследить, когда и какие плагины обновлялись.

Уведомления по email

Чтобы получать письма после обновления, добавим отправку email на админскую почту:

function wpclass_notify_on_plugin_update( $upgrader_object, $options ) {
    if ( $options['action'] == 'update' && $options['type'] == 'plugin' ) {
        $to = get_option( 'admin_email' );
        $subject = 'Обновление плагинов на сайте ' . get_bloginfo( 'name' );
        $plugin_list = implode(", ", $options['plugins']);
        $message = "Автоматическое обновление плагинов прошло успешно:\n" . $plugin_list;
        wp_mail( $to, $subject, $message );
    }
}
add_action( 'upgrader_process_complete', 'wpclass_notify_on_plugin_update', 10, 2 );

Теперь после каждого обновления вы будете получать письмо с перечнем обновленных плагинов.

Пример создания плагина для управления автоматическими обновлениями

Чтобы не захламлять functions.php, лучше упаковать весь функционал в отдельный плагин. Вот минимальный пример:

<?php
/**
 * Plugin Name: WPClass Auto Plugin Updater
 * Description: Автоматическое обновление выбранных плагинов с логированием и уведомлениями.
 * Version: 1.0
 * Author: WPClass
 */

// Включаем автообновление для списка плагинов
function wpclass_auto_update_selected_plugins( $update, $item ) {
    $plugins_to_update = [
        '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', 'wpclass_auto_update_selected_plugins', 10, 2 );

// Логируем обновления
function wpclass_log_plugin_update( $upgrader_object, $options ) {
    if ( $options['action'] == 'update' && $options['type'] == 'plugin' ) {
        $log_file = WP_CONTENT_DIR . '/plugins/wpclass-update-log.log';
        foreach ( $options['plugins'] as $plugin ) {
            $message = date('Y-m-d H:i:s') . " - Plugin updated: {$plugin}\n";
            error_log( $message, 3, $log_file );
        }
    }
}
add_action( 'upgrader_process_complete', 'wpclass_log_plugin_update', 10, 2 );

// Отправляем уведомления по email
function wpclass_notify_on_plugin_update( $upgrader_object, $options ) {
    if ( $options['action'] == 'update' && $options['type'] == 'plugin' ) {
        $to = get_option( 'admin_email' );
        $subject = 'Обновление плагинов на сайте ' . get_bloginfo( 'name' );
        $plugin_list = implode(", ", $options['plugins']);
        $message = "Автоматическое обновление плагинов прошло успешно:\n" . $plugin_list;
        wp_mail( $to, $subject, $message );
    }
}
add_action( 'upgrader_process_complete', 'wpclass_notify_on_plugin_update', 10, 2 );

Этот плагин можно расширять, добавляя настройки в админке, фильтры исключения, интеграцию с WP Cron для периодической проверки обновлений.

Рекомендации и предостережения по автоматическим обновлениям

Автоматизация — мощный инструмент, но требует осторожности:

  • Всегда делайте резервные копии сайта перед включением автообновлений.
  • Тестируйте обновления на staging-сервере, если это возможно.
  • Не включайте автообновления для плагинов с высокой вероятностью конфликтов или критичных настроек.
  • Используйте логирование и уведомления, чтобы быстро реагировать на возможные проблемы.

Если хотите более гибкое решение, обратите внимание на плагин Clearfy Pro, который предоставляет расширенный контроль над обновлениями и оптимизацией сайта.

Заключение

В этой статье мы подробно рассмотрели, как реализовать автоматическое обновление плагинов WordPress без использования сторонних библиотек. Вы узнали, как включать автообновления для всех или выбранных плагинов, как вести логи и получать уведомления. Владея этими знаниями, вы сможете улучшить безопасность и стабильность вашего сайта, не прибегая к громоздким решениям.

Как создать динамический фильтр таксономий в WordPress для удобства пользователей
07.04.2026
Как удалить неиспользуемые таксономии в WordPress
21.03.2026
Как отладить ошибки PHP в WordPress на живом сайте
23.01.2026
Как сделать автоматическое удаление старого контента по типу записи в WordPress
03.04.2026
Создание настройки для изменения заголовка страницы в WordPress через админку
09.01.2026