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

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

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

Обновления плагинов закрывают уязвимости и добавляют новые функции. Если обновлять плагины сразу после выхода новых версий, сайт будет защищён от атак, а совместимость с WordPress останется на высоком уровне. Однако ручное обновление — это рутинная работа, которую можно упростить.

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

Настройка автоматических обновлений через код в WordPress

WordPress поддерживает автоматические обновления ядра, тем и плагинов. Для включения автоматического обновления плагинов можно использовать фильтр auto_update_plugin. Вот пример, как включить автообновления для всех плагинов:

add_filter('auto_update_plugin', '__return_true');

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

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

Если нужно обновлять не все плагины, а только определённые, можно использовать следующий код с проверкой по имени папки плагина:

add_filter('auto_update_plugin', 'wprus_auto_update_selected_plugins', 10, 2);
function wprus_auto_update_selected_plugins($update, $item) {
    // Список плагинов для автообновления
    $plugins_to_update = array(
        'akismet/akismet.php',
        'contact-form-7/wp-contact-form-7.php'
    );

    if (in_array($item->plugin, $plugins_to_update)) {
        return true;
    }
    return $update;
}

В массиве $plugins_to_update указывайте директории плагинов, которые хотите обновлять автоматически.

Настройка расписания автоматического обновления плагинов

По умолчанию WordPress проверяет обновления плагинов при запуске wp-cron. Но можно настроить собственное расписание с помощью событий cron, чтобы запускать обновления в удобное время.

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

// Регистрируем событие при активации темы или плагина
if (!wp_next_scheduled('wprus_daily_auto_update_plugins')) {
    wp_schedule_event(strtotime('03:00:00'), 'daily', 'wprus_daily_auto_update_plugins');
}

// Хук для запуска обновления
add_action('wprus_daily_auto_update_plugins', 'wprus_run_auto_update_plugins');

function wprus_run_auto_update_plugins() {
    include_once(ABSPATH . 'wp-admin/includes/class-wp-upgrader.php');
    $upgrader = new Plugin_Upgrader();
    $all_plugins = get_plugins();

    foreach ($all_plugins as $plugin_file => $plugin_data) {
        $result = $upgrader->upgrade($plugin_file);
        // Можно логировать результат $result для отладки
    }
}

// Отменяем событие при деактивации
register_deactivation_hook(__FILE__, function() {
    wp_clear_scheduled_hook('wprus_daily_auto_update_plugins');
});

Этот код создаёт расписание, которое запускает функцию обновления всех плагинов в 3 часа ночи. В функции используется класс Plugin_Upgrader для поочерёдного обновления каждого плагина.

Логирование и уведомления об обновлениях

Для контроля процесса полезно добавить логирование результатов обновления и уведомления на email.

Пример логирования в файл wprus-plugin-update.log:

function wprus_log_update_result($plugin, $result) {
    $log_file = WP_CONTENT_DIR . '/wprus-plugin-update.log';
    $date = date('Y-m-d H:i:s');
    $status = $result ? 'успешно' : 'ошибка';
    $message = "[$date] Плагин $plugin обновлён: $status\n";
    file_put_contents($log_file, $message, FILE_APPEND);
}

Внутри цикла обновления вызывайте эту функцию:

foreach ($all_plugins as $plugin_file => $plugin_data) {
    $result = $upgrader->upgrade($plugin_file);
    wprus_log_update_result($plugin_file, $result);
}

Также можно добавить отправку email с итогами обновления, используя wp_mail.

Использование плагинов для расширенной автоматизации обновлений

Если вы предпочитаете готовые решения, обратите внимание на плагин Clearfy Pro. Он позволяет гибко настраивать автоматические обновления для плагинов и тем, а также отключать ненужные функции WordPress для повышения производительности.

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

  • Полный контроль над процессом обновления
  • Отсутствие лишнего кода и нагрузки на сайт
  • Возможность интеграции с другими сервисами и логикой на сайте

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

Общие рекомендации и меры предосторожности

Автоматическое обновление — мощный инструмент, но требует внимания:

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

При правильном подходе автоматизация обновлений помогает сэкономить время и повысить безопасность сайта на WordPress.

Как автоматизировать обновление плагинов в WordPress с помощью кода
23.12.2025
Как создать и использовать кастомные таблицы в WordPress: пошаговое руководство
12.02.2026
Как использовать WP Cron в WordPress для автоматизации задач
27.03.2026
Как удалить автосохранения и ревизии постов в WordPress: эффективные способы и примеры
05.01.2026
WooCommerce: автоматическое удаление старых неоплаченных заказов
15.05.2026
×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше