wplinks.ru wordpress WPLinks

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

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

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

Сначала проверьте, что именно грузится лишним

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

Удобнее всего делать это через инструменты разработчика:

  • откройте страницу в Chrome или Firefox;
  • нажмите F12 и перейдите во вкладку Network;
  • обновите страницу;
  • отфильтруйте запросы по CSS и JS;
  • посмотрите, какие файлы приходят с путями вида /wp-content/plugins/....

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

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

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

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

Ниже рабочий пример. Он отключает конкретные стили и скрипты только на странице с определённым слагом:

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

Здесь важно два момента:

  • is_page( 'contact' ) ограничивает отключение только страницей с ярлыком contact;
  • plugin-style-handle и plugin-script-handle нужно заменить на реальные handle файлов, а не на имя файла или название плагина.

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

Как узнать правильный handle

Самая частая ошибка — пытаться снять файл по имени style.css или script.js. WordPress работает с handle, и именно его нужно передавать в wp_dequeue_style() или wp_dequeue_script().

Есть несколько способов найти handle:

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

Если плагин написан аккуратно, handle часто совпадает с названием расширения или его модуля, но полагаться на это нельзя. Проверка по коду надёжнее.

Когда нужно отключать не весь файл, а только на отдельных типах страниц

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

Примеры условий, которые реально помогают в этой задаче:

  • is_front_page() — главная страница;
  • is_page() — конкретная страница или набор страниц;
  • is_single() — отдельная запись;
  • is_archive() — архивы;
  • is_category() — рубрики;
  • is_singular( 'post' ) — одиночная запись нужного типа.

Например, если скрипт нужен только на странице заявки, но не нужен в блоге, можно ограничить его подключение так:

add_action( 'wp_enqueue_scripts', function () {
    if ( ! is_page( 'request' ) ) {
        wp_dequeue_style( 'request-form-style' );
        wp_dequeue_script( 'request-form-script' );
    }
}, 100 );

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

Если плагин не даёт снять ассеты стандартным способом

Иногда плагин подключает стили и скрипты внутри своего шаблона или делает это без нормальных handle. Тогда стандартный wp_dequeue_* может не сработать. В таком случае есть три реальных варианта.

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

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

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

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

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

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

Для быстрой проверки можно снова открыть Network и убедиться, что лишний файл исчез. Если это скрипт, дополнительно посмотрите вкладку Console: иногда после отключения всплывают ошибки, потому что другой код ожидал этот файл.

Если ресурс не исчез, обычно причина одна из трёх:

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

В первых двух случаях помогает корректировка handle и приоритета. В третьем — уже нужен разбор конкретного плагина.

Что даёт такой подход на практике

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

Если у вас типовой сайт на WordPress, начните с самых тяжёлых и очевидных источников: форм, слайдеров, pop-up, таблиц, галерей, рейтингов и виджетов. Обычно именно они подключают лишние файлы на всех страницах. Дальше уже имеет смысл точечно отключать ресурсы там, где они не нужны, и оставить их только в рабочем контексте.

Если нужно не только отключать лишние ресурсы, но и системно чистить сайт от лишних подключений, дублей и технического мусора, для WordPress часто используют Clearfy Pro: https://wpshop.ru/plugins/clearfy?utm_source=wplinks.ru&utm_medium=article&utm_campaign=otklyuchit-lishnie-stili-i-skripty-plaginov-na-otdelnyh-stranicah-wordpress

×
Halloween Game

Сыграй в игру, спаси сайт! Забери приз

Играть