Если тема и плагины подключают свои скрипты и стили на всех страницах, сайт получает лишние запросы, а страницы — ненужный вес. На практике это часто видно в PageSpeed, WebPageTest или в списке подключенных файлов в браузере: на странице контактов загружается слайдер, на статье — стили формы, на главной — ассеты плагина, который там вообще не используется. Убрать такие подключения можно, но делать это нужно точечно: не «вырубать всё подряд», а отключать только то, что действительно не нужно на конкретной странице.
Самый надёжный способ — снять регистрацию или очередь подключения через WordPress-хуки wp_dequeue_script() и wp_dequeue_style() в дочерней теме или небольшом функциональном плагине. Для части плагинов есть свои фильтры и настройки, и ими лучше пользоваться, если они предусмотрены. Ниже — рабочая схема, которая помогает понять, что отключать, где это делать и как не сломать сайт.
Сначала найдите, что именно грузится лишним
Прежде чем что-то отключать, нужно увидеть список подключаемых файлов на конкретной странице. Иначе легко убрать не тот файл и получить сломанный интерфейс, неработающую форму или конфликт с другим плагином.
Проверять удобно так:
- откройте нужную страницу в браузере;
- посмотрите вкладку Network в DevTools и отфильтруйте
JSиCSS; - сравните, какие файлы загружаются на странице, где они нужны, и на странице, где они не используются;
- если есть доступ к коду, временно включите просмотр подключений через
wp_print_scriptsиwp_print_stylesили используйте плагин для анализа ассетов.
В WordPress у каждого скрипта и стиля есть handle — внутреннее имя, по которому его можно отключить. Именно handle нужен для wp_dequeue_script() и wp_dequeue_style(). Название файла вроде style.css или frontend.js не всегда совпадает с handle, поэтому угадывать здесь не стоит.
Как отключить скрипт или стиль на конкретной странице
Если вы знаете handle и понимаете, на какой странице файл не нужен, добавьте условное отключение в functions.php дочерней темы или в свой мини-плагин. Для точечного отключения обычно используют хук wp_enqueue_scripts с приоритетом выше стандартного, чтобы код сработал после подключения ассетов темой или плагином.
Пример: на странице с ID 42 не нужен скрипт и стиль плагина, которые подключаются на фронтенде.
add_action( 'wp_enqueue_scripts', function () {
if ( is_page( 42 ) ) {
wp_dequeue_script( 'plugin-script-handle' );
wp_dequeue_style( 'plugin-style-handle' );
}
}, 100 );Здесь важно несколько моментов:
is_page( 42 )срабатывает только на нужной странице;- число
100в приоритете помогает выполнить код после большинства стандартных подключений; - handle должен быть точным, иначе WordPress ничего не отключит.
Если нужно отключить ассеты на нескольких страницах, удобнее использовать массив условий:
add_action( 'wp_enqueue_scripts', function () {
if ( is_page( array( 42, 57, 89 ) ) ) {
wp_dequeue_script( 'plugin-script-handle' );
wp_dequeue_style( 'plugin-style-handle' );
}
}, 100 );Такой подход хорошо работает, когда вы точно знаете, где файл не нужен. Например, стили формы можно отключить на странице «О компании», а скрипт галереи — на обычных текстовых страницах.
Когда лучше отключать не по странице, а по типу контента
Иногда удобнее ориентироваться не на конкретный ID, а на тип записи, шаблон или архив. Это полезно, если один и тот же плагин нужен только в блоге, но не нужен в статических страницах, или наоборот.
Например, если скрипт нужен только в записях, а на страницах его можно убрать:
add_action( 'wp_enqueue_scripts', function () {
if ( is_page() ) {
wp_dequeue_script( 'plugin-script-handle' );
}
}, 100 );Или наоборот — оставить только на странице с формой:
add_action( 'wp_enqueue_scripts', function () {
if ( ! is_page( 'contact' ) ) {
wp_dequeue_style( 'contact-form-style' );
}
}, 100 );Здесь is_page( 'contact' ) может принимать слаг страницы, а не только ID. Это удобно, если ID меняется при переносе сайта или работе на staging-копии. Но если есть риск совпадения с другим объектом, лучше использовать ID.
Чем отличается отключение через dequeue от удаления подключения в теме
В WordPress есть два близких, но не одинаковых сценария. Первый — вы не трогаете код темы или плагина, а просто снимаете файл с очереди на конкретной странице. Второй — правите саму тему или плагин и убираете вызов wp_enqueue_script() или wp_enqueue_style().
Для обычного сайта почти всегда безопаснее первый вариант. Он не ломает обновления и позволяет быстро откатить изменение. Правка исходников темы или плагина оправдана только если это ваш собственный код и вы точно контролируете обновления.
| Подход | Когда использовать | Риск |
|---|---|---|
wp_dequeue_script() / wp_dequeue_style() | Нужно убрать файл только на части страниц | Низкий, если handle определён верно |
| Правка темы или плагина | Это ваш код и вы готовы поддерживать изменения | Выше: обновление может вернуть подключение |
Если задача именно в снижении веса страниц, а не в глубокой переработке темы, обычно выбирают dequeue. Это быстрее, безопаснее и проще откатывается.
Что делать, если скрипт или стиль подключает сам плагин
У некоторых плагинов есть собственные настройки, которые позволяют отключить ассеты глобально или убрать их с отдельных типов страниц. Это предпочтительнее, чем писать свой код, если настройка уже предусмотрена. Например, плагин может не грузить стили на фронтенде, если на странице нет его шорткода или блока.
Если такой настройки нет, остаётся WordPress-код. Но перед этим стоит проверить, не предоставляет ли плагин фильтр для отключения подключения. У популярных решений это встречается часто, а вот у небольших плагинов — реже. Если фильтр есть, он обычно надёжнее, чем грубый dequeue, потому что автор плагина сам учитывает внутренние зависимости.
Когда фильтра нет, а файл всё равно грузится везде, отключайте его через wp_dequeue_* только после проверки, что на нужной странице нет зависимостей от этого файла. Особенно это касается библиотек вроде jQuery-плагинов, где один скрипт может быть нужен другому.
Как не сломать страницу после отключения
Самая частая ошибка — убрать не только «лишний» файл, но и тот, от которого зависит интерфейс. Внешне это проявляется по-разному: перестаёт открываться меню, не работает слайдер, пропадает форма, ломается адаптивная вёрстка или не отправляется AJAX-запрос.
Перед отключением проверьте три вещи:
- что файл действительно не нужен на этой странице;
- что у него нет зависимых скриптов, которые останутся без родителя;
- что после отключения страница открывается в обычном и мобильном виде.
Если сомневаетесь, отключайте по одному файлу и сразу проверяйте результат. Так проще понять, какой именно ассет был критичным. Массовое удаление десятка скриптов за один проход почти всегда заканчивается долгой отладкой.
Ещё один практический момент: если вы используете кэш-плагин или серверный кэш, после изменений очистите кэш. Иначе вы можете смотреть на старую версию страницы и думать, что код не сработал.
Как проверить, что отключение сработало
После добавления кода откройте нужную страницу в режиме инкогнито или после очистки кэша и проверьте исходный код страницы и вкладку Network. Если всё сделано правильно, файл исчезнет из списка загружаемых ресурсов именно на той странице, где вы его отключали, но останется на страницах, где он нужен.
Полезно проверить не только отсутствие файла, но и поведение сайта:
- открываются ли меню, модальные окна, слайдеры и формы;
- не сломалась ли верстка из-за удалённого CSS;
- нет ли ошибок в консоли браузера;
- не исчезли ли стили у элементов, которые зависят от отключённого файла.
Если файл всё ещё загружается, обычно причина одна из трёх: неверный handle, код добавлен не в тот хук или условие is_page() не совпадает с реальной страницей.
Когда лучше вынести код в отдельный мини-плагин
Если отключений становится много, не держите их в functions.php активной темы. При смене темы вы потеряете все правки. Для набора точечных отключений удобнее сделать маленький плагин или mu-plugin, если у вас есть доступ к файловой системе и вы понимаете, как работает автозагрузка плагинов.
Это особенно полезно, когда:
- на сайте несколько шаблонов и много исключений по страницам;
- вы работаете с дочерней темой, но планируете её менять;
- нужно сохранить оптимизации при обновлениях темы.
Для одного-двух отключений дочерняя тема обычно достаточно удобна. Для регулярной оптимизации ассетов отдельный мини-плагин практичнее.
Если свести всё к короткой схеме, порядок действий такой: найти лишний файл, определить его handle, отключить его точечно через wp_dequeue_script() или wp_dequeue_style(), проверить страницу в браузере и только потом переходить к следующему ассету. Именно такой подход даёт заметный выигрыш без лишнего риска для сайта.