• WordPress
  • Отключение плагинов во фронтенде в WordPress

    Иногда в WordPress приходится использовать плагины, которые нужны только в админке.

    Например:

    • плагины импорта / экспорта данных (CSV, XML, API);
    • плагины для миграций, бэкапов или отладочных задач;
    • плагины для управления пользователями, ролями, доступами;
    • внутренние админские инструменты (настройки, отчёты, логирование);
    • плагины, которые используются один раз или периодически, а не на каждом запросе.

    Проблема в том, что по умолчанию WordPress грузит все активные плагины и на фронтенде, даже если они там вообще не используются. Это лишние файлы, хуки и, как следствие, лишняя нагрузка.

    Подготовка MU плагина

    Этот код должен работать только как Must-Use плагин.

    Если положить его в обычную тему или стандартный плагин — он просто не сработает.

    1. Проверяем, есть ли папка wp-content/mu-plugins. Если нет — создаём её.
    2. В папке mu-plugins создаём файл с любым названием, например: unload-plugins.php.
    3. Добавляем в этот файл следующий код.
     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 просто не увидит указанные плагины и не загрузит их.
    • Для админки всё продолжит работать как обычно.

    Когда это действительно полезно

    Этот подход отлично подходит, если:

    • плагин нужен только для админки;
    • плагин добавляет тяжёлые хуки или классы;
    • ты хочешь сократить общее время загрузки страниц;
    • проект уже разросся и стандартной оптимизации недостаточно.

    Итог

    В итоге ты получаешь более лёгкий фронтенд, без лишних плагинов. Решение простое, надёжное и отлично подходит для продакшена.