Как отключить лишние скрипты и стили плагинов в WordPress

Если плагин подключает свои скрипты и стили на каждой странице, хотя они нужны только в одном месте, сайт получает лишние HTTP-запросы, а иногда и лишнюю нагрузку на рендеринг. На небольшом проекте это может быть незаметно, но на перегруженной теме или при десятке активных плагинов разница уже хорошо видна в отчётах по производительности.

Отключать такие ресурсы можно, но делать это нужно точечно. Самая частая ошибка — без разбора убирать все файлы плагина со всего сайта. В итоге ломается форма, слайдер, галерея или админская часть. Правильный подход: сначала понять, где именно подключается ресурс, затем отключить его только там, где он не нужен, и проверить результат.

Что именно можно отключать

Речь идёт о файлах, которые WordPress подключает через стандартные механизмы: стили через wp_enqueue_style(), скрипты через wp_enqueue_script(). Плагин может грузить их на фронтенде, в админке или в обоих местах.

Обычно имеет смысл отключать:

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

Не стоит трогать файлы, если вы не уверены, для чего они нужны. Иногда один и тот же CSS используется для нескольких элементов, а один JS-файл отвечает и за визуал, и за поведение формы.

Сначала найдите, что именно грузится

Перед отключением нужно увидеть список ресурсов. Самый простой способ — открыть страницу сайта в браузере и посмотреть вкладку Network в инструментах разработчика. Там видно, какие CSS и JS-файлы загружаются, с каких доменов и на каком этапе.

Если нужен более практичный способ без ручного анализа каждого запроса, используйте плагин для аудита фронтенда или посмотрите исходный код страницы. В HTML обычно видны пути к файлам в тегах <link> и <script>. По имени файла часто понятно, какому плагину он принадлежит.

Полезно проверить несколько страниц:

  • главную;
  • страницу записи;
  • страницу, где реально используется функциональность плагина;
  • страницу, где её точно нет.

Если файл есть на всех страницах, а нужен только на одной, это хороший кандидат на отключение.

Самый безопасный способ: отключать ресурсы через код

В WordPress правильнее всего убирать стили и скрипты через wp_dequeue_style() и wp_dequeue_script(). Делать это нужно в дочерней теме или в собственном мини-плагине, а не в файлах самого плагина: при обновлении изменения пропадут.

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

Ниже пример, как отключить стиль и скрипт плагина на всех страницах, кроме нужной. Код размещают в functions.php дочерней темы или в отдельном плагине.

add_action( 'wp_enqueue_scripts', function () {
    if ( is_page( 'contact' ) ) {
        return;
    }

    wp_dequeue_style( 'plugin-style-handle' );
    wp_dequeue_script( 'plugin-script-handle' );
}, 100 );

Здесь важны два момента. Во-первых, plugin-style-handle и plugin-script-handle — это не имя файла, а handle, то есть идентификатор, под которым ресурс зарегистрирован в WordPress. Во-вторых, приоритет 100 нужен, чтобы ваш код сработал после того, как плагин уже подключил свои файлы.

Если нужно убрать ресурс только на конкретной странице, проще инвертировать логику:

add_action( 'wp_enqueue_scripts', function () {
    if ( ! is_page( 'contact' ) ) {
        wp_dequeue_style( 'plugin-style-handle' );
        wp_dequeue_script( 'plugin-script-handle' );
    }
}, 100 );

Для записей, рубрик и других типов контента используются похожие условные теги: is_single(), is_singular(), is_category(), is_front_page(). Выбирайте тот, который соответствует вашей задаче, а не самый общий.

Как узнать handle ресурса

Без правильного handle отключение не сработает. Его можно найти несколькими способами.

Первый вариант — посмотреть исходный код страницы и найти путь к файлу. Это не всегда даёт handle напрямую, но помогает понять, какой плагин отвечает за ресурс. Дальше проще искать в коде плагина вызов wp_enqueue_style() или wp_enqueue_script().

Второй вариант — использовать отладочный плагин, который показывает список подключённых стилей и скриптов с их handle. Это удобнее, если ресурсов много и вручную искать неудобно.

Третий вариант — открыть файлы плагина и найти строки вроде:

wp_enqueue_script( 'plugin-script-handle', plugins_url( 'assets/js/script.js', __FILE__ ), array( 'jquery' ), '1.0.0', true );

Первый параметр и есть handle. Именно его нужно передавать в wp_dequeue_script() или wp_dequeue_style().

Если плагин подключает файлы без условий

Некоторые плагины не проверяют, где именно нужен ресурс, и грузят его везде. Это не всегда ошибка: разработчик мог выбрать универсальный вариант, чтобы не ломать динамические блоки, AJAX-формы или виджеты в шорткодах. Но если вы точно знаете, что функциональность используется только на одной странице, ресурс можно убрать вручную.

Иногда одного wp_dequeue_* недостаточно. Плагин может подключать файл не через стандартную очередь WordPress, а напрямую через HTML в шаблоне или через inline-скрипт. Тогда отключение через хук не сработает, и придётся искать другой способ: править шаблон, отключать модуль в настройках плагина или заменять плагин на более лёгкий.

Если плагин предоставляет собственные настройки загрузки ресурсов, сначала проверьте их. Это безопаснее, чем вмешиваться в код. Многие формы, слайдеры и конструкторы позволяют отключать глобальную загрузку CSS/JS или ограничивать её только страницами, где используется блок.

Что делать, если ресурс нужен только в админке или только на фронтенде

Иногда проблема обратная: плагин подключает скрипты в админке, хотя они нужны только на фронтенде, или наоборот. Для этого тоже есть стандартные хуки.

На фронтенде используйте wp_enqueue_scripts. Для админки — admin_enqueue_scripts. Если ресурс мешает только в панели управления, отключать его нужно именно там, а не на сайте.

Пример для админки:

add_action( 'admin_enqueue_scripts', function () {
    wp_dequeue_script( 'plugin-admin-script' );
    wp_dequeue_style( 'plugin-admin-style' );
}, 100 );

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

Как проверить, что всё работает после отключения

После правки не ограничивайтесь визуальной проверкой главной страницы. Откройте те страницы, где плагин должен работать, и те, где он не нужен. Проверьте формы, кнопки, попапы, галереи, отправку данных и любые интерактивные элементы.

Затем снова откройте вкладку Network и убедитесь, что лишний файл исчез. Если вы отключали CSS, проверьте, не поехала ли вёрстка. Если отключали JS, проверьте консоль браузера на ошибки. Одна ошибка в JavaScript может сломать не только сам плагин, но и соседние скрипты, если они зависят друг от друга.

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

Когда лучше не отключать вручную

Ручное отключение не всегда оправдано. Если плагин часто обновляется, а его ресурсы используются в нескольких местах, поддерживать список исключений становится неудобно. То же самое касается сложных конструкторов и плагинов, которые подгружают файлы динамически в зависимости от состояния страницы.

В таких случаях лучше:

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

Если на сайте много лишних подключений и вы хотите упростить чистку без ручного поиска каждого handle, можно посмотреть в сторону Clearfy Pro: он помогает управлять частью типовых оптимизаций WordPress и отключать ненужные элементы без постоянного редактирования темы. Но даже с таким инструментом всё равно полезно понимать, что именно вы убираете и где это используется.

Если коротко, рабочая схема такая: найти лишний ресурс, определить его handle, отключить его только там, где он не нужен, и обязательно проверить сайт после изменений. Это самый надёжный способ уменьшить количество запросов без сюрпризов на продакшене.

⭐⭐⭐⭐⭐