Введение
Во многих проектах на WordPress используются тяжелые плагины: инструменты импорта и экспорта (CSV/XML/WP All Import), модули миграций, генераторы резервных копий или специфические интерфейсы администрирования.
- Проблема: ядро WordPress по умолчанию загружает все активные плагины на каждый запрос к сайту, включая публичную витрину (фронтенд). Это раздувает потребление оперативной памяти, замедляет Time to First Byte (TTFB) и выполняет сотни лишних SQL-запросов и хуков.
- Решение: перехватывать список активных плагинов через фильтр
option_active_pluginsна самом раннем этапе загрузки ядра с помощью Must-Use плагина (mu-plugins). - Результат: тяжелые административные расширения полностью исключаются из цикла загрузки фронтенда, ускоряя рендеринг страниц для посетителей без влияния на работу панели управления.
1. Создание Must-Use плагина
Обычная тема (functions.php) или стандартный плагин не подходят для этой задачи, так как загружаются слишком поздно — после того, как WordPress уже инициализировал список активных модулей. Код должен работать исключительно как Must-Use плагин.
- Проверьте наличие каталога
wp-content/mu-plugins. Если его нет, создайте директорию:mkdir -p wp-content/mu-plugins - Создайте файл плагина, например
wp-content/mu-plugins/unload-plugins.php. - Добавьте следующий оптимизированный код:
<?php
/**
* Plugin Name: Unload Admin-Only Plugins on Frontend
* Description: Исключает тяжелые административные плагины из загрузки на фронтенде.
*/
add_filter( 'option_active_plugins', function ( $active_plugins ) {
// В панели управления и при AJAX-запросах админки оставляем плагины активными
if ( is_admin() ) {
return $active_plugins;
}
// Список плагинов для выгрузки в формате 'папка/главный-файл.php'
$unload_plugins = [
'wp-all-import-pro/wp-all-import-pro.php',
'duplicator/duplicator.php',
];
// Быстрый поиск через ассоциативный массив O(1)
$unload_map = array_flip( $unload_plugins );
foreach ( $active_plugins as $index => $plugin ) {
if ( isset( $unload_map[ $plugin ] ) ) {
unset( $active_plugins[ $index ] );
}
}
return array_values( $active_plugins );
} );
Важно о путях плагинов
2. Механизм фильтрации и условия применения
Как работает перехват
Фильтр option_active_plugins срабатывает в момент, когда ядро WordPress запрашивает опцию active_plugins из таблицы wp_options.
Удаляя элемент из возвращаемого массива, мы заставляем ядро считать, что плагин не активирован, и WordPress даже не подключает его PHP-файлы к стеку выполнения.
Сценарии применения
Использовать выборочную выгрузку рекомендуется для:
- плагинов импорта, парсинга и синхронизации по REST API;
- утилит резервного копирования и миграции базы данных;
- админ-панелей и конструкторов отчетов, не влияющих на шорткоды или разметку страниц;
- тяжелых профилировщиков (Query Monitor на продакшене при избирательной отладке).
Проверка зависимостей
Вывод
Выгрузка административных плагинов через mu-plugins — один из самых эффективных методов серверной микро-оптимизации WordPress:
- Экономия памяти: PHP не парсит тысячи строк чужого кода на каждый визит пользователя или краулера.
- Нулевой риск блокировки: Must-Use плагины активны всегда и не могут быть случайно деактивированы администратором через панель управления.
- Чистота хуков: уменьшается количество обработчиков в
init,wp_enqueue_scriptsиparse_request, делая ответ сайта ощутимо быстрее.