wpcontrol.ru wordpress WPControl.ru

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

Зачем нужна автоматизация обновлений в WordPress

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

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

Кроме того, приведём примеры полезных плагинов и настроек, которые помогут вам избежать ошибок при автоматизации.

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

Включение автообновлений через интерфейс

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

Эта функция удобна, если вы хотите быстро настроить автообновления для нескольких компонентов без кода, но не позволяет управлять процессом программно.

Глобальное включение автоматических обновлений

Вы можете включить автоматические обновления для всех плагинов и тем с помощью добавления в wp-config.php или в файл функций темы (functions.php) следующих констант и фильтров:

define('WP_AUTO_UPDATE_CORE', true); // обновления ядра включая минорные и мажорные
add_filter('auto_update_plugin', '__return_true');
add_filter('auto_update_theme', '__return_true');

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

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

Использование хуков WordPress для контроля обновлений

Для более тонкого управления можно реализовать функции с префиксом wpcontrol_, которые будут запускать обновления по расписанию или при определённых условиях.

Например, добавим функцию для обновления всех плагинов вручную при запуске CRON задачи:

function wpcontrol_update_all_plugins() {
    include_once ABSPATH . 'wp-admin/includes/plugin.php';
    $all_plugins = get_plugins();
    foreach ($all_plugins as $plugin_file => $plugin_data) {
        if (is_plugin_active($plugin_file)) {
            wp_update_plugin($plugin_file); // В WordPress нет прямой функции wp_update_plugin, нужно использовать wp_update_plugins()
        }
    }
}

add_action('wpcontrol_daily_update', 'wpcontrol_update_all_plugins');

Пояснение: стандартных функций wp_update_plugin нет, поэтому для обновления плагинов используется класс Plugin_Upgrader с методом upgrade(). Ниже пример правильного кода.

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

function wpcontrol_update_all_plugins() {
    if (!current_user_can('update_plugins')) {
        return;
    }

    include_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
    include_once ABSPATH . 'wp-admin/includes/plugin.php';

    $upgrader = new Plugin_Upgrader(new Automatic_Upgrader_Skin());
    $all_plugins = get_plugins();

    foreach ($all_plugins as $plugin_file => $plugin_data) {
        if (is_plugin_active($plugin_file)) {
            $upgrader->upgrade($plugin_file);
        }
    }
}

add_action('wpcontrol_daily_update', 'wpcontrol_update_all_plugins');

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

Настройка WP-Cron для автоматического запуска обновлений

Чтобы функция обновления запускалась автоматически, добавим cron-задание:

if (!wp_next_scheduled('wpcontrol_daily_update')) {
    wp_schedule_event(time(), 'daily', 'wpcontrol_daily_update');
}

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

Обратите внимание, что WP-Cron зависит от посещений сайта, поэтому если у вас низкий трафик, лучше настроить системный cron на сервере для вызова wp-cron.php.

Полезные плагины для автоматизации обновлений

Easy Updates Manager

Очень популярный плагин, который позволяет детально настроить автоматические обновления для ядра, плагинов, тем и переводов. Интерфейс понятный, есть журнал обновлений, уведомления по почте.

Advanced Automatic Updates

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

WP Control (для управления Cron)

Плагин, который позволяет управлять WP-Cron задачами, что полезно при настройке автоматических обновлений по расписанию.

Риски и рекомендации при автоматизации обновлений

Резервное копирование перед обновлениями

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

Тестирование на тестовом сайте

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

Уведомления об обновлениях

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

×
WordPress
дай сайту суперсилу!

Скидки на топовые темы и плагины

Активировать суперсилу ⋙