wpmoney.ru wordpress WP Money

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

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

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

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

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

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

Для включения автоматических обновлений всех плагинов в коде можно добавить следующий фильтр:

add_filter('auto_update_plugin', '__return_true');

Этот фильтр заставит WordPress автоматически обновлять все плагины без вашего вмешательства. Но что если нужно обновлять только определённые плагины? Для этого фильтр можно реализовать с логикой:

function wpmoney_auto_update_selected_plugins( $update, $item ) {
    $plugins_to_update = array(
        'contact-form-7/wp-contact-form-7.php',
        'woocommerce/woocommerce.php',
    );
    if ( in_array( $item->plugin, $plugins_to_update ) ) {
        return true;
    }
    return false;
}
add_filter( 'auto_update_plugin', 'wpmoney_auto_update_selected_plugins', 10, 2 );

Как создать собственную функцию автоматизации обновлений плагинов

Для сайта wpmoney.ru можно написать кастомную функцию, которая будет запускать обновление плагинов по расписанию или по событию. Например, использовать WP-Cron для проверки обновлений и их установки раз в сутки.

Пример кода функции автообновления и её планирования:

function wpmoney_auto_update_plugins() {
    include_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
    include_once ABSPATH . 'wp-admin/includes/plugin.php';

    $plugins_to_update = array(
        'akismet/akismet.php',
        'jetpack/jetpack.php',
    );

    $upgrader = new Plugin_Upgrader();

    foreach ( $plugins_to_update as $plugin ) {
        if ( is_plugin_active( $plugin ) && get_site_transient('update_plugins')->response[ $plugin ] ) {
            $upgrader->upgrade( $plugin );
        }
    }
}

if ( ! wp_next_scheduled( 'wpmoney_daily_plugin_update' ) ) {
    wp_schedule_event( time(), 'daily', 'wpmoney_daily_plugin_update' );
}
add_action( 'wpmoney_daily_plugin_update', 'wpmoney_auto_update_plugins' );

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

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

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

  • Easy Updates Manager — мощный инструмент для настройки обновлений ядра, плагинов и тем, включая возможность исключать и включать автообновления выборочно.
  • WP Auto Update Plugins — плагин для простого включения автообновлений плагинов с минимальной настройкой.
  • Companion Auto Update — расширенные настройки, включая уведомления и логи обновлений.

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

Как интегрировать код и плагины

Можно комбинировать использование фильтров и хуков в functions.php с плагинами. Например, включить базовые автообновления через фильтр, а плагин Easy Updates Manager использовать для исключения определённых плагинов из автообновлений. Такой подход даёт полный контроль и гибкость.

Особенности безопасности и отладки автоматических обновлений

Автоматизация обновлений несёт риск поломок сайта, если обновление несовместимо или содержит баг. Чтобы минимизировать риски, рекомендуем:

  • Использовать staging-среду для тестирования обновлений.
  • Включить уведомления об успехе или ошибках обновлений.
  • Логировать процесс обновлений для быстрого анализа сбоев.

Пример добавления уведомления по email при ошибках:

function wpmoney_plugin_update_notification( $upgrader_object, $options ) {
    if ( $options['type'] === 'plugin' && $options['action'] === 'update' ) {
        if ( ! empty( $upgrader_object->skin->get_errors()->errors ) ) {
            wp_mail( get_option('admin_email'), 'Ошибка обновления плагина', 'При обновлении плагина произошла ошибка. Проверьте логи.');
        }
    }
}
add_action( 'upgrader_process_complete', 'wpmoney_plugin_update_notification', 10, 2 );

Заключение

Автоматизация обновления плагинов в WordPress — это мощный способ снизить нагрузку на администрирование и повысить безопасность сайта. Используя встроенные фильтры, WP-Cron и кастомный код, вы можете гибко настроить этот процесс под свои задачи. Готовые плагины дополнят функционал и упростят настройку. Главное — всегда контролировать процесс и иметь резервные копии, чтобы избежать проблем с обновлениями.

×

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

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

пишет статьи

готовит SEO

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

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