wphow.ru wordpress WPHow

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

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

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

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

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

Важность контроля автообновлений:

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

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

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

function wphow_enable_all_plugin_updates( $update, $item ) {
    return true; // Включить автообновления для всех плагинов
}
add_filter( 'auto_update_plugin', 'wphow_enable_all_plugin_updates', 10, 2 );

function wphow_enable_all_theme_updates( $update, $item ) {
    return true; // Включить автообновления для всех тем
}
add_filter( 'auto_update_theme', 'wphow_enable_all_theme_updates', 10, 2 );

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

Добавляем настройку в админке для управления автообновлениями на уровне плагинов

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

Создание страницы настроек

Для начала добавим меню в админку и страницу с чекбоксами для каждого плагина:

function wphow_register_auto_update_settings_page() {
    add_options_page(
        'Автообновления плагинов',
        'Автообновления плагинов',
        'manage_options',
        'wphow-auto-update-settings',
        'wphow_auto_update_settings_page_html'
    );
}
add_action( 'admin_menu', 'wphow_register_auto_update_settings_page' );

function wphow_auto_update_settings_page_html() {
    if ( ! current_user_can( 'manage_options' ) ) {
        return;
    }

    if ( isset( $_POST['wphow_save'] ) ) {
        check_admin_referer( 'wphow_auto_update_settings_save', 'wphow_auto_update_nonce' );

        $plugins = get_plugins();
        $auto_updates = array();

        foreach ( $plugins as $plugin_file => $plugin_data ) {
            $auto_updates[ $plugin_file ] = isset( $_POST['auto_update_plugins'][ $plugin_file ] );
        }

        update_option( 'wphow_auto_update_plugins', $auto_updates );
        echo '<div class="updated"><p>Настройки сохранены.</p></div>';
    }

    $plugins = get_plugins();
    $auto_updates = get_option( 'wphow_auto_update_plugins', array() );

    echo '<div class="wrap"><h1>Настройка автообновлений плагинов</h1><form method="post">';
    wp_nonce_field( 'wphow_auto_update_settings_save', 'wphow_auto_update_nonce' );
    echo '<table class="form-table"><tbody>';

    foreach ( $plugins as $plugin_file => $plugin_data ) {
        $checked = isset( $auto_updates[ $plugin_file ] ) && $auto_updates[ $plugin_file ] ? 'checked' : '';
        echo '<tr><th><label>' . esc_html( $plugin_data['Name'] ) . '</label></th><td><input type="checkbox" name="auto_update_plugins[' . esc_attr( $plugin_file ) . ']" ' . $checked . '></td></tr>';
    }

    echo '</tbody></table><p><input type="submit" name="wphow_save" class="button button-primary" value="Сохранить"></p></form></div>';
}

Этот код создаёт страницу в меню «Настройки» с чекбоксами для каждого установленного плагина. Администратор может отметить, для каких плагинов включать автообновления.

Применение настроек к автообновлениям

Далее связать эти настройки с системой автообновлений WordPress:

function wphow_auto_update_plugins_filter( $update, $item ) {
    $auto_updates = get_option( 'wphow_auto_update_plugins', array() );
    if ( isset( $auto_updates[ $item->plugin ] ) ) {
        return $auto_updates[ $item->plugin ];
    }
    return false;
}
add_filter( 'auto_update_plugin', 'wphow_auto_update_plugins_filter', 10, 2 );

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

Примеры плагинов для управления автообновлениями

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

  • Easy Updates Manager — один из самых популярных плагинов для детального управления обновлениями плагинов, тем и ядра. Позволяет настроить автообновления для каждого плагина и темы, включить уведомления и отчёты.
  • WP Auto Update — простой плагин, который включает автообновления всех плагинов и тем, но без гибких настроек.
  • Clearfy Pro — плагин оптимизации WordPress с возможностью включать и отключать автообновления, а также управлять другими функциями для ускорения и безопасности сайта. Подробнее на официальной странице Clearfy Pro.

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

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

function wphow_notify_admin_on_plugin_update( $update, $item ) {
    if ( $update ) {
        $to = get_option( 'admin_email' );
        $subject = 'Плагин обновлён: ' . $item->name;
        $message = 'Плагин "' . $item->name . '" был автоматически обновлён до версии ' . $item->new_version . '.';
        wp_mail( $to, $subject, $message );
    }
    return $update;
}
add_filter( 'auto_update_plugin', 'wphow_notify_admin_on_plugin_update', 20, 2 );

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

Как отключить автообновления для конкретных плагинов программно

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

Пример кода, который отключает автообновления для плагина WooCommerce:

function wphow_disable_auto_update_for_woocommerce( $update, $item ) {
    if ( $item->plugin === 'woocommerce/woocommerce.php' ) {
        return false; // Отключаем автообновления для WooCommerce
    }
    return $update;
}
add_filter( 'auto_update_plugin', 'wphow_disable_auto_update_for_woocommerce', 10, 2 );

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

Заключение по управлению автообновлениями в WordPress

Автоматические обновления — мощный инструмент для обеспечения безопасности и актуальности сайта, но требуют контроля. Используя кастомные настройки и фильтры, можно гибко управлять процессом обновлений, получая уведомления и исключая важные плагины из автоматического обновления. Для удобства можно использовать популярные плагины вроде Easy Updates Manager или Clearfy Pro.

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

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

×
Оптимизируй свой сайт!

Скидка -15% на премиум плагин Clearfy Pro

Купить плагин сейчас ⋙