Иногда в WordPress приходится использовать плагины, которые нужны только в админке.
Например:
- плагины импорта / экспорта данных (CSV, XML, API);
- плагины для миграций, бэкапов или отладочных задач;
- плагины для управления пользователями, ролями, доступами;
- внутренние админские инструменты (настройки, отчёты, логирование);
- плагины, которые используются один раз или периодически, а не на каждом запросе.
Проблема в том, что по умолчанию WordPress грузит все активные плагины и на фронтенде, даже если они там вообще не используются. Это лишние файлы, хуки и, как следствие, лишняя нагрузка.
Подготовка MU плагина
Этот код должен работать только как Must-Use плагин.
Если положить его в обычную тему или стандартный плагин — он просто не сработает.
- Проверяем, есть ли папка
wp-content/mu-plugins. Если нет — создаём её. - В папке mu-plugins создаём файл с любым названием, например:
unload-plugins.php. - Добавляем в этот файл следующий код.
1function slug_unload_plugins( $active_plugins ) {
2
3 if ( is_admin() ) {
4 return $active_plugins;
5 }
6
7 // Плагины, которые нужно отключить
8 // Указываем: папка-плагина/главный-файл.php
9 $unload = [
10 'folder-plugin/file-plugin.php',
11 ];
12
13 $unload_map = array_flip( $unload );
14
15 foreach ( $active_plugins as $i => $plugin ) {
16 if ( isset( $unload_map[ $plugin ] ) ) {
17 unset( $active_plugins[ $i ] );
18 }
19 }
20
21 return array_values( $active_plugins );
22}
23add_filter( 'option_active_plugins', 'slug_unload_plugins' );
Как это работает
- Мы используем фильтр
option_active_plugins, который позволяет перехватить список активных плагинов до их загрузки. - Если пользователь находится во фронтенде, WordPress просто не увидит указанные плагины и не загрузит их.
- Для админки всё продолжит работать как обычно.
Когда это действительно полезно
Этот подход отлично подходит, если:
- плагин нужен только для админки;
- плагин добавляет тяжёлые хуки или классы;
- ты хочешь сократить общее время загрузки страниц;
- проект уже разросся и стандартной оптимизации недостаточно.
Итог
В итоге ты получаешь более лёгкий фронтенд, без лишних плагинов. Решение простое, надёжное и отлично подходит для продакшена.