Наличие большого количества плагинов в WordPress может негативно влиять на производительность сайта и безопасность. Часто на сайте остаются неиспользуемые или устаревшие плагины, которые создают дополнительную нагрузку и потенциальные уязвимости. В этой статье разберём, как автоматически выявлять и удалять неиспользуемые плагины в WordPress с помощью кода и готовых решений.
Почему важно удалять неиспользуемые плагины в WordPress
Часто при тестировании новых функций и расширений администраторы устанавливают множество плагинов, которые потом просто отключают, забывая удалить. Это приводит к нескольким проблемам:
- Безопасность. Отключённые, но не удалённые плагины могут содержать уязвимости, которые злоумышленники могут использовать.
- Производительность. Хотя отключённые плагины не выполняются, их файлы и скрипты всё равно занимают место на сервере и усложняют резервное копирование.
- Управляемость. Чем больше плагинов, тем сложнее обновлять и обеспечивать стабильность сайта.
Поэтому регулярная очистка плагинов — это важная часть обслуживания сайта.
Как определить неиспользуемые плагины: критерии и методы
Под неиспользуемыми плагинами можно понимать:
- Отключённые плагины, которые не планируется использовать в ближайшее время.
- Плагины, которые долго не обновлялись и не вызывают ошибок, но не нужны по функционалу.
- Плагины, функциональность которых дублируется другими инструментами или темами.
Для автоматического выявления можно использовать следующие подходы:
- Проверять статус активации плагина с помощью функции
is_plugin_active(). - Отслеживать дату последнего обновления плагина из файла
readme.txtилиplugin.php. - Использовать плагины-аудиторы, например, Plugin Organizer, для анализа использования плагинов.
Однако автоматический анализ использования может быть неточным, поэтому рекомендуем дополнительно делать ручной аудит.
Пример кода для автоматического удаления отключённых плагинов
Ниже пример функции, которая удаляет все отключённые плагины, если они не обновлялись более 180 дней. Это пример, который требует внимательного тестирования перед применением на живом сайте.
function wpaddons_delete_inactive_plugins() {
if ( ! current_user_can('activate_plugins') ) {
return;
}
require_once ABSPATH . 'wp-admin/includes/plugin.php';
$all_plugins = get_plugins();
$active_plugins = get_option('active_plugins', array());
$now = time();
$days_threshold = 180; // 180 дней
foreach ($all_plugins as $plugin_file => $plugin_data) {
// Пропускаем активные
if (in_array($plugin_file, $active_plugins)) {
continue;
}
$plugin_path = WP_PLUGIN_DIR . '/' . $plugin_file;
$last_modified = filemtime($plugin_path);
if (!$last_modified) {
$last_modified = $now; // если не удалось определить, считаем текущее время
}
$diff_days = ($now - $last_modified) / (60 * 60 * 24);
if ($diff_days > $days_threshold) {
// Удаляем плагин
delete_plugins(array($plugin_file));
}
}
}
// Запускаем при админском хукe
add_action('admin_init', 'wpaddons_delete_inactive_plugins');Эта функция проходит по всем плагинам, пропускает активные, проверяет дату последнего изменения файлов и удаляет те, которые не менялись больше 180 дней.
Обратите внимание, что delete_plugins() вызовет удаление из файловой системы, поэтому лучше предварительно сделать бэкап.
Готовые решения для автоматического удаления и управления плагинами
Если вы не хотите писать код, есть несколько плагинов, которые помогут управлять неиспользуемыми плагинами:
- WP Plugin Manager — позволяет массово отключать и удалять плагины.
- Plugin Organizer — помогает оптимизировать загрузку плагинов и отключать их на отдельных страницах.
- Clearfy Pro — не только оптимизирует работу сайта, но и предлагает инструменты для управления плагинами и отключения ненужных функций WordPress.
Для интеграции с WPShop рекомендуем обратить внимание на Clearfy Pro — этот плагин содержит много полезных функций для оптимизации и безопасности, в том числе управление плагинами.
Как настроить автоматическое уведомление об устаревших плагинах
Помимо удаления, полезно получать уведомления о неактивных или устаревших плагинах. Для этого можно использовать следующий код, который отправляет письмо администратору, если найдены плагины без обновлений более 180 дней и которые неактивны.
function wpaddons_notify_outdated_inactive_plugins() {
if ( ! current_user_can('manage_options') ) {
return;
}
require_once ABSPATH . 'wp-admin/includes/plugin.php';
$all_plugins = get_plugins();
$active_plugins = get_option('active_plugins', array());
$now = time();
$days_threshold = 180;
$outdated_plugins = array();
foreach ($all_plugins as $plugin_file => $plugin_data) {
if (in_array($plugin_file, $active_plugins)) {
continue;
}
$plugin_path = WP_PLUGIN_DIR . '/' . $plugin_file;
$last_modified = filemtime($plugin_path);
if (!$last_modified) {
$last_modified = $now;
}
$diff_days = ($now - $last_modified) / (60 * 60 * 24);
if ($diff_days > $days_threshold) {
$outdated_plugins[] = $plugin_data['Name'];
}
}
if (!empty($outdated_plugins)) {
$to = get_option('admin_email');
$subject = 'WPAddons: Устаревшие и неактивные плагины';
$message = "Обнаружены неактивные плагины без обновлений более {$days_threshold} дней:\n" . implode("\n", $outdated_plugins);
wp_mail($to, $subject, $message);
}
}
add_action('admin_init', 'wpaddons_notify_outdated_inactive_plugins');Этот скрипт можно доработать, чтобы запускать по расписанию с помощью WP-Cron или интегрировать в административную панель.
Рекомендации по безопасному удалению плагинов
При удалении плагинов важно учитывать:
- Перед удалением сделайте полную резервную копию сайта и базы данных.
- Убедитесь, что функциональность плагина не нужна или дублируется другими инструментами.
- Тестируйте удаление на тестовом сайте.
- После удаления проверьте сайт на ошибки и корректность работы.
Также полезно использовать плагины для очистки базы данных, например Clearfy Pro, чтобы удалить остаточные данные после удаления плагинов.