Плагины — это мощный инструмент для расширения функционала WordPress, однако с течением времени на сайте может копиться много неиспользуемых или устаревших расширений. Они не только занимают место, но и могут представлять угрозу безопасности и замедлять работу сайта. В этой статье рассмотрим, как автоматизировать процесс отключения таких плагинов, чтобы поддерживать сайт в оптимальном состоянии.
Почему важно отключать неиспользуемые плагины
Давайте разберёмся, зачем вообще отключать плагины, которые вы не используете:
- Безопасность. Неактивные плагины не получают обновлений и могут стать уязвимыми для атак.
- Производительность. Хотя неактивные плагины не загружаются, они всё равно занимают место на диске, а их наличие может влиять на скорость бэкапов и обновлений.
- Управляемость. Меньше плагинов — проще контролировать, что именно работает на сайте, и быстрее находить причины возможных ошибок.
Ручное отключение и удаление плагинов — рутинная задача, особенно на больших сайтах. Поэтому автоматизация здесь очень поможет.
Подходы к автоматическому отключению плагинов
Автоматизировать отключение неиспользуемых плагинов можно несколькими способами:
1. Отключение по времени бездействия
Можно реализовать скрипт, который отключает плагины, неактивные определённое время (например, не обновлявшиеся или неактивные более 6 месяцев).
Для этого потребуется хранить дату последнего использования или обновления плагина. К сожалению, WordPress не хранит такую информацию по умолчанию, но можно использовать собственный механизм слежения.
2. Отключение плагинов, неактивных на фронтенде
Если плагин не загружается на страницах сайта (например, используется только в админке), и при этом не нужен, его можно отключить.
3. Отключение по списку исключений
Для некоторых плагинов можно задать правило, что если они не использовались, то отключить их автоматически, а остальные — оставить.
Пример реализации: автоотключение неактивных плагинов по времени
Рассмотрим пример плагина wpkey_auto_deactivate_plugins, который отключает плагины, неактивные более 180 дней.
<?php
/**
* Plugin Name: WPKey Auto Deactivate Plugins
* Description: Автоматически отключает плагины, неактивные более 180 дней
* Version: 1.0
* Author: WPKey
*/
// Хук активации плагина - инициализация данных
register_activation_hook(__FILE__, 'wpkey_auto_deactivate_init');
function wpkey_auto_deactivate_init() {
$plugins = get_plugins();
$now = time();
foreach ($plugins as $plugin_file => $plugin_data) {
if (!is_plugin_active($plugin_file)) {
update_option('wpkey_plugin_last_active_' . md5($plugin_file), $now);
} else {
update_option('wpkey_plugin_last_active_' . md5($plugin_file), $now);
}
}
}
// Обновляем дату последней активности плагина при загрузке админки
add_action('admin_init', 'wpkey_auto_deactivate_update_active_plugins');
function wpkey_auto_deactivate_update_active_plugins() {
$active_plugins = get_option('active_plugins', []);
$now = time();
foreach ($active_plugins as $plugin_file) {
update_option('wpkey_plugin_last_active_' . md5($plugin_file), $now);
}
}
// Планировщик для проверки и отключения
add_action('wpkey_auto_deactivate_check', 'wpkey_auto_deactivate_check_plugins');
function wpkey_auto_deactivate_check_plugins() {
$plugins = get_plugins();
$now = time();
$threshold = 180 * DAY_IN_SECONDS; // 180 дней
foreach ($plugins as $plugin_file => $plugin_data) {
if (is_plugin_active($plugin_file)) {
$last_active = get_option('wpkey_plugin_last_active_' . md5($plugin_file), 0);
if (($now - $last_active) > $threshold) {
deactivate_plugins($plugin_file);
error_log("WPKey: Плагин {$plugin_file} отключён автоматически из-за неактивности.");
}
}
}
}
// Запускаем проверку раз в сутки
if (!wp_next_scheduled('wpkey_auto_deactivate_check')) {
wp_schedule_event(time(), 'daily', 'wpkey_auto_deactivate_check');
}
// Очищаем при деактивации плагина
register_deactivation_hook(__FILE__, 'wpkey_auto_deactivate_deactivation');
function wpkey_auto_deactivate_deactivation() {
wp_clear_scheduled_hook('wpkey_auto_deactivate_check');
}
Этот код создаёт простой механизм, который отслеживает дату последнего использования плагина через обновление при каждом заходе в админку. Если плагин не использовался 180 дней — он автоматически отключается.
Использование готовых плагинов для управления плагинами
Если не хотите писать код, можно использовать плагины, облегчающие управление плагинами и их состоянием:
- Clearfy Pro — плагин для оптимизации WordPress, в том числе помогает выявлять и отключать неиспользуемые расширения.
- Expert Review — инструмент для аудита сайта, включая анализ плагинов.
Оба варианта помогут не только отключать, но и выявлять проблемные плагины, повышая безопасность и стабильность сайта.
Рекомендации по безопасному отключению плагинов
При автоматическом отключении важно придерживаться некоторых правил:
- Всегда делайте резервные копии перед массовыми изменениями.
- Исключайте из процедуры критичные плагины (например, плагины безопасности или кеширования).
- Тестируйте изменения на тестовом сайте, чтобы избежать сбоев в работе.
- Добавляйте логирование для отслеживания автоматических отключений.
Таким образом, автоматизация отключения неиспользуемых плагинов — это разумный шаг к поддержанию чистоты и безопасности вашего WordPress-сайта. Используйте пример кода или готовые решения, адаптируя под свои задачи.