Как создать свой плагин для автообновлений WordPress

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

Почему стоит создавать собственный плагин для автообновлений

Сторонние плагины для автообновления часто предлагают базовый функционал, но не всегда подходят под специфические задачи. Свой плагин позволяет:

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

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

Основы работы с автообновлениями в WordPress

WordPress имеет встроенные хуки и фильтры для управления автообновлениями. Основные из них:

  • auto_update_plugin — фильтр для автообновления плагинов.
  • auto_update_theme — фильтр для автообновления тем.
  • automatic_updater_disabled — отключение автоматических обновлений.

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

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

Создадим плагин wpall-auto-updater, который будет автоматически обновлять только указанные плагины.

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

// Список плагинов для автообновления
function wpall_auto_updater_get_plugins_to_update() {
    return [
        'akismet/akismet.php',
        'contact-form-7/wp-contact-form-7.php',
    ];
}

// Фильтр автообновления плагинов
add_filter('auto_update_plugin', 'wpall_auto_updater_filter_plugins', 10, 2);
function wpall_auto_updater_filter_plugins($update, $item) {
    $plugins_to_update = wpall_auto_updater_get_plugins_to_update();
    if (in_array($item->plugin, $plugins_to_update)) {
        return true;
    }
    return false;
}

// Логирование обновлений
add_action('upgrader_process_complete', 'wpall_auto_updater_log', 10, 2);
function wpall_auto_updater_log($upgrader, $options) {
    if ($options['action'] === 'update' && $options['type'] === 'plugin') {
        $updated = implode(', ', $options['plugins']);
        error_log('WPAll Auto Updater: обновлены плагины: ' . $updated);
    }
}
?>

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

Автоматическое обновление тем — расширенный пример

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

add_filter('auto_update_theme', 'wpall_auto_updater_update_themes', 10, 2);
function wpall_auto_updater_update_themes($update, $theme) {
    $themes_to_update = ['twentytwentyone', 'reboot']; // пример тем для автообновления
    if (in_array($theme->get_stylesheet(), $themes_to_update)) {
        return true;
    }
    return false;
}

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

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

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

// Регистрируем событие при активации плагина
register_activation_hook(__FILE__, function() {
    if (!wp_next_scheduled('wpall_auto_update_event')) {
        wp_schedule_event(time(), 'daily', 'wpall_auto_update_event');
    }
});

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

// Обработчик события
add_action('wpall_auto_update_event', function() {
    include_once(ABSPATH . 'wp-admin/includes/class-wp-upgrader.php');
    $upgrader = new Plugin_Upgrader();
    $plugins = wpall_auto_updater_get_plugins_to_update();
    foreach ($plugins as $plugin) {
        $upgrader->upgrade($plugin);
    }
});

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

Лучшие практики и безопасность

При создании плагина для автообновлений важно помнить:

  • Обязательно тестируйте обновления на тестовом сайте перед продакшеном.
  • Регистрируйте корректно хуки активации и деактивации.
  • Используйте wp_nonce_field и проверки прав пользователя, если добавляете интерфейс настроек.
  • Логируйте действия для мониторинга и отладки.
  • Учитывайте возможные конфликты плагинов и откаты обновлений.

Интеграция с плагинами WPShop

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

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

Как удалить записи и метаданные в WordPress без плагинов
06.01.2026
Как использовать настройки Redis для ускорения WordPress
13.12.2025
Как удалить или заблокировать неиспользуемые плагины в WordPress
25.11.2025
Как создать автоматические резервные копии базы данных WordPress с помощью PHP
03.01.2026
Как создать собственный тип записи (Custom Post Type) в WordPress с примерами кода
22.11.2025