В процессе администрирования WordPress-сайта иногда возникает необходимость быстро очистить список активных и неактивных плагинов, особенно бесплатных, чтобы повысить безопасность, производительность или подготовить сайт к миграции. Выполнять это вручную через админку не всегда удобно, особенно если плагинов много.
В этой статье рассмотрим, как с помощью пользовательского кода и вспомогательных плагинов быстро удалить все бесплатные плагины из WordPress. Это решение будет полезно администраторам и разработчикам, которые хотят автоматизировать процесс очистки.
Почему стоит удалять бесплатные плагины массово
Многие плагины в репозитории WordPress бесплатны и имеют открытый исходный код, но не все из них поддерживаются или подходят вашему сайту. Удаление ненужных бесплатных плагинов помогает:
- Снизить риск безопасности — устаревшие плагины часто становятся причиной уязвимостей.
- Улучшить производительность сайта — меньше плагинов = меньше запросов к базе и файловой системе.
- Облегчить сопровождение сайта — проще управлять меньшим количеством компонентов.
Автоматизация удаления позволяет сэкономить время и избежать ошибок при ручном удалении.
Определение бесплатных плагинов: как их отличить
В WordPress плагины располагаются в директории wp-content/plugins/. Каждый плагин имеет файл с шапкой, где прописана информация:
/*
Plugin Name: Название плагина
Plugin URI: https://example.com
Description: Описание
Version: 1.0
Author: Автор
Author URI: https://author.example.com
License: GPLv2 or later
*/Бесплатные плагины чаще всего распространяются под лицензией GPL и размещены в официальном репозитории WordPress. Признак бесплатного плагина — наличие поля Plugin URI, указывающего на wordpress.org или отсутствие коммерческого домена в имени автора.
В коде мы будем использовать функцию для проверки, зарегистрирован ли плагин из официального репозитория, и по лицензии.
Код для массового удаления бесплатных плагинов
Создадим функцию wpteam_delete_free_plugins(), которая переберет все плагины, определит бесплатные и удалит их.
function wpteam_delete_free_plugins() {
if ( ! current_user_can('activate_plugins') ) {
return 'Нет доступа';
}
include_once ABSPATH . 'wp-admin/includes/plugin.php';
$all_plugins = get_plugins();
$deleted = [];
foreach ($all_plugins as $plugin_file => $plugin_data) {
// Проверяем лицензию
if ( isset($plugin_data['License']) && stripos($plugin_data['License'], 'GPL') !== false ) {
// Дополнительно можно проверить Plugin URI на wordpress.org
if ( isset($plugin_data['PluginURI']) && strpos($plugin_data['PluginURI'], 'wordpress.org') !== false ) {
// Удаляем плагин
$plugin_path = WP_PLUGIN_DIR . '/' . $plugin_file;
if ( is_dir($plugin_path) ) {
wpteam_rrmdir($plugin_path);
$deleted[] = $plugin_data['Name'];
} else {
// Файл плагина
@unlink($plugin_path);
$deleted[] = $plugin_data['Name'];
}
}
}
}
return $deleted;
}
// Рекурсивное удаление папки
function wpteam_rrmdir($dir) {
if (is_dir($dir)) {
$objects = scandir($dir);
foreach ($objects as $object) {
if ($object != "." && $object != "..") {
$path = $dir . DIRECTORY_SEPARATOR . $object;
if (is_dir($path)) {
wpteam_rrmdir($path);
} else {
@unlink($path);
}
}
}
@rmdir($dir);
}
}Этот код проверяет, что пользователь имеет права на управление плагинами, затем получает список всех плагинов и удаляет те, что лицензированы GPL и имеют ссылку на wordpress.org. Удаление происходит рекурсивно для папок плагинов. Можно доработать фильтр под свои нужды, например, добавить исключения.
Использование кода: запуск через WP-CLI или как плагин
Для запуска функции можно добавить вызов в файл functions.php темы с условием, чтобы он сработал один раз, или создать отдельный плагин с этим кодом. Более удобный вариант — использовать WP-CLI:
wp eval 'print_r(wpteam_delete_free_plugins());'Этот вызов выведет список удаленных плагинов и позволит контролировать процесс без риска случайного запуска через браузер.
Плагины для аналогичной задачи и их ограничения
Существуют плагины для управления плагинами, например, Bulk Plugin Manager, но они не всегда позволяют удалять плагины массово с фильтрацией по лицензии или источнику. Если вы хотите использовать готовое решение, обратите внимание на Clearfy Pro — он помогает управлять безопасностью и может помочь выявить устаревшие и неиспользуемые плагины.
Однако автоматическое удаление — задача критическая, и лучше иметь резервную копию перед выполнением любых массовых операций.
Резюме и рекомендации по безопасности
Удаление бесплатных плагинов из WordPress за один ход с помощью кастомного кода позволяет быстро чистить сайт от потенциально ненужных и небезопасных компонентов. Важно соблюдать меры предосторожности:
- Делайте резервную копию сайта и базы данных.
- Проверяйте права доступа перед запуском кода.
- Тестируйте на локальной копии сайта.
- Используйте WP-CLI для безопасного запуска.
Таким образом вы сохраните контроль над сайтом и избавитесь от лишних бесплатных плагинов эффективно и быстро.
Для дополнительных возможностей управления плагинами и безопасностью рекомендуем ознакомиться с плагином Clearfy Pro, который оптимизирует работу WordPress и помогает выявлять устаревшие и небезопасные плагины.