Если на сайте WordPress один и тот же CSS и JavaScript грузятся на всех страницах, хотя реально нужны только на одной записи, в одном шаблоне или на конкретной странице формы, это почти всегда лишняя нагрузка. В результате растёт число запросов, увеличивается вес страницы и сложнее удержать нормальный PageSpeed без потери функциональности.
Самый рабочий подход здесь простой: сначала понять, какой именно файл подключается, затем отключить его только там, где он не нужен. Делать это нужно аккуратно, потому что в WordPress многие стили и скрипты завязаны на тему, плагины и блоки редактора. Если снять не тот файл, можно сломать галерею, слайдер, форму или верстку.
Что именно можно отключать, а что лучше не трогать
Отключать имеет смысл только те ресурсы, которые вы точно идентифицировали и понимаете, где они используются. Обычно это:
- стили и скрипты плагинов, которые нужны только на одной странице;
- файлы виджетов, форм, слайдеров, таблиц, карт;
- лишние стили темы для шаблонов, которые на конкретной странице не используются;
- скрипты, подключённые по привычке «на весь сайт», хотя они нужны только в отдельном разделе.
Не стоит без проверки отключать базовые файлы темы, jQuery, стили блоков Gutenberg, если сайт использует стандартные блоки, а также ресурсы, которые отвечают за критичную часть интерфейса. На некоторых темах один и тот же файл обслуживает сразу несколько элементов, и внешне он выглядит «лишним», хотя без него ломается половина страницы.
Сначала найдите, что именно грузится на странице
Перед отключением нужно увидеть список подключённых CSS и JS. Самый удобный способ — открыть страницу в браузере и посмотреть вкладку Network в инструментах разработчика. Там видно, какие файлы загружаются, откуда они приходят и сколько весят. Если нужен более быстрый ориентир, можно использовать расширения для просмотра подключённых ресурсов или проверить исходный код страницы.
Ищите файлы по имени плагина, темы или функции. Например, если на странице формы грузится файл, связанный только с этим плагином, а форма стоит в одном месте сайта, такой ресурс кандидат на отключение на остальных страницах. Если же файл общий и используется в шапке, меню или блоках контента, его трогать не нужно.
Полезно сразу проверить, где именно ресурс нужен: на всех страницах, только в записи, только в архиве, только на конкретном шаблоне страницы или только в админке. От этого зависит способ отключения.
Отключение через wp_dequeue_style() и wp_dequeue_script()
В WordPress стандартный способ убрать уже подключённый файл — снять его из очереди через wp_dequeue_style() или wp_dequeue_script(). Обычно это делают в дочерней теме или в небольшом кастомном плагине, а не напрямую в файлах родительской темы. Так изменения не пропадут после обновления.
Ниже пример: отключаем стиль и скрипт плагина только на одной конкретной странице по ID. Такой вариант подходит, когда ресурс нужен везде, кроме одной страницы, где он создаёт лишнюю нагрузку или конфликтует с версткой.
add_action('wp_enqueue_scripts', function () {
if (is_page(123)) {
wp_dequeue_style('plugin-style-handle');
wp_deregister_style('plugin-style-handle');
wp_dequeue_script('plugin-script-handle');
wp_deregister_script('plugin-script-handle');
}
}, 100);Здесь важно два момента. Во-первых, plugin-style-handle и plugin-script-handle — это не имя файла, а handle, то есть внутренний идентификатор подключения. Во-вторых, приоритет 100 нужен, чтобы код сработал после того, как тема и плагины уже добавили свои ресурсы.
Если нужно отключить ресурс не на одной странице, а на всём сайте, кроме нескольких исключений, условие можно развернуть. Например, отключать везде, кроме страницы контактов:
add_action('wp_enqueue_scripts', function () {
if (!is_page('contacts')) {
wp_dequeue_style('plugin-style-handle');
wp_deregister_style('plugin-style-handle');
}
}, 100);Такой подход удобен, когда форма, карта или виджет нужны только в одном месте, а на остальных страницах только утяжеляют загрузку.
Как понять правильный handle ресурса
Самая частая ошибка — пытаться отключить файл по названию CSS или JS в URL. WordPress работает с handle, и именно его нужно указывать в функции отключения. Если handle неизвестен, его можно найти в коде темы или плагина, где используется wp_enqueue_style() или wp_enqueue_script().
Пример подключения в коде выглядит так:
wp_enqueue_script('theme-slider', get_template_directory_uri() . '/assets/js/slider.js', array('jquery'), '1.0', true);Здесь theme-slider и есть handle. Именно его и нужно передать в wp_dequeue_script(). Если подключение идёт из плагина, ищите его в файлах плагина или в документации разработчика. Иногда handle совпадает с названием плагина, иногда нет.
Если доступа к коду нет, можно посмотреть исходник страницы и найти URL файла, а затем уже искать по этому имени в теме или плагине. Это не всегда быстро, но надёжнее, чем отключать наугад.
Отключение только на конкретном шаблоне или типе записи
Часто ресурс нужен не по страницам, а по шаблонам: например, скрипт галереи нужен только в записях блога, а на страницах «О нас» и «Контакты» он лишний. В таком случае удобнее использовать условные теги WordPress.
Для записей можно проверять тип записи, для страниц — is_page(), для шаблона — is_page_template(), для архивов — is_archive() или более точные проверки. Пример для отдельного шаблона страницы:
add_action('wp_enqueue_scripts', function () {
if (is_page_template('templates/landing.php')) {
wp_dequeue_style('plugin-style-handle');
wp_dequeue_script('plugin-script-handle');
}
}, 100);Это хороший вариант, если у вас есть лендинг, отдельная страница услуги или шаблон без лишних блоков. Тогда можно убрать ресурсы, которые нужны только для стандартных страниц сайта.
Для отдельных типов записей логика похожая. Например, если скрипт нужен только для обычных постов, а на страницах и в кастомных типах записей он не используется, можно проверять is_singular('post').
Что делать, если ресурс подключается слишком рано или слишком поздно
Иногда код отключения не срабатывает с первого раза. Обычно причина в том, что ресурс подключается не там, где вы ожидаете, или срабатывает другой код, который добавляет его повторно. В таком случае проверьте три вещи.
- Код отключения должен выполняться на фронтенде, а не в админке.
- Приоритет хука должен быть достаточно высоким, чтобы сначала отработали подключения темы и плагинов.
- Handle должен совпадать с реальным идентификатором ресурса.
Если плагин подключает файл через нестандартную логику, иногда проще отключить его на уровне самого плагина или через его настройки. Это безопаснее, чем пытаться вырезать ресурс после загрузки. Но если настроек нет, wp_dequeue_* остаётся нормальным рабочим способом.
Как проверить, что ничего не сломалось
После отключения обязательно откройте страницу в режиме инкогнито и проверьте не только внешний вид, но и поведение элементов. Особенно внимательно смотрите на формы, меню, слайдеры, вкладки, всплывающие окна и блоки, которые завязаны на JavaScript.
Проверка обычно занимает несколько минут:
- Откройте страницу, где ресурс должен быть отключён.
- Посмотрите исходный код или вкладку Network и убедитесь, что файл больше не загружается.
- Проверьте, что верстка не поехала и нужные элементы работают.
- Откройте страницу, где ресурс должен остаться, и убедитесь, что там он всё ещё подключён.
Если ресурс исчез со страницы, но функциональность сломалась, значит он был нужен не только в этом месте. В таком случае лучше вернуть его и искать более точечное условие отключения.
Когда лучше не писать код вручную
Если на сайте много плагинов и подключений, ручное отключение каждого файла может занять время и потребовать аккуратной диагностики. В таких случаях удобнее использовать инструмент, который помогает управлять лишними ресурсами и дублями без постоянного редактирования темы. Например, Clearfy Pro подходит для задач, где нужно чистить сайт от лишних подключений и отключать ненужные элементы точечно. Но даже с таким инструментом всё равно важно понимать, что именно вы отключаете и на какой странице это безопасно.
Если задача простая и у вас есть доступ к дочерней теме или небольшому плагину, код через wp_dequeue_style() и wp_dequeue_script() обычно даёт самый предсказуемый результат. Если сайт сложный, сначала снимите список подключений, потом отключайте только то, что действительно не используется на конкретной странице или шаблоне.