wpmake.ru wordpress WPMake

Как отключить скрипты WooCommerce на ненужных страницах

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

Задача здесь не в том, чтобы «выключить WooCommerce целиком», а в том, чтобы аккуратно убрать его ассеты там, где они не нужны, и не сломать корзину, оформление заказа, личный кабинет и страницы товара.

Когда это действительно нужно

Сценарий обычно выглядит так: магазин используется только в одном разделе, а остальной сайт — это контентные страницы, база знаний или корпоративный сайт. При этом в исходном коде везде видны woocommerce-layout, woocommerce-general, wc-cart-fragments и похожие файлы. Если открыть DevTools и посмотреть вкладку Network, можно увидеть, что часть этих ресурсов загружается даже на страницах, где нет корзины и кнопок покупки.

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

Быстрая диагностика

  • Откройте страницу без магазина, например главную или статью блога.
  • Посмотрите список CSS и JS в DevTools.
  • Найдите файлы с префиксом woocommerce или wc-.
  • Проверьте, не ломается ли на этой странице форма поиска, мини-корзина или блоки, которые зависят от WooCommerce.

Если на странице нет кнопок «Добавить в корзину», виджетов WooCommerce и пользователь не может перейти в checkout с этой страницы напрямую, ассеты обычно можно отключать.

Что отключать, а что оставить

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

ПодходЧто даётРиск
Отключить всё через кодМаксимально чистая загрузкаМожно сломать корзину, checkout и виджеты
Отключить только на не-магазинных страницахБезопаснее для сайтаНужно аккуратно определить условия
Использовать плагин оптимизацииБыстро без кодаНе всегда точный контроль, возможны конфликты

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

Пошаговое решение через код

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

<?php
add_action( 'wp_enqueue_scripts', 'wpmake_dequeue_woocommerce_assets', 99 );
function wpmake_dequeue_woocommerce_assets() {
    if ( is_admin() ) {
        return;
    }

    // Не отключаем на страницах магазина и связанных страницах.
    if ( function_exists( 'is_woocommerce' ) && ( is_woocommerce() || is_cart() || is_checkout() || is_account_page() ) ) {
        return;
    }

    // Стили WooCommerce.
    wp_dequeue_style( 'woocommerce-general' );
    wp_dequeue_style( 'woocommerce-layout' );
    wp_dequeue_style( 'woocommerce-smallscreen' );
    wp_dequeue_style( 'wc-block-style' );

    // Скрипты WooCommerce.
    wp_dequeue_script( 'wc-cart-fragments' );
    wp_dequeue_script( 'woocommerce' );
    wp_dequeue_script( 'wc-add-to-cart' );
    wp_dequeue_script( 'js-cookie' );
}

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

Если нужен более точный контроль

Иногда достаточно отключить только один тяжёлый скрипт, например фрагменты корзины. Это полезно на страницах блога, где мини-корзина не используется, а запросы к ?wc-ajax=get_refreshed_fragments только создают лишнюю нагрузку.

<?php
add_action( 'wp_enqueue_scripts', 'wpmake_disable_cart_fragments_on_content_pages', 20 );
function wpmake_disable_cart_fragments_on_content_pages() {
    if ( is_admin() ) {
        return;
    }

    if ( function_exists( 'is_woocommerce' ) && ( is_cart() || is_checkout() || is_account_page() || is_product() || is_shop() ) ) {
        return;
    }

    wp_dequeue_script( 'wc-cart-fragments' );
}

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

Альтернатива без кода: плагин оптимизации

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

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

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

После правки не ограничивайтесь визуальной проверкой. Некоторые ошибки проявляются только на этапе добавления товара в корзину или при обновлении мини-корзины.

  • Откройте страницу блога и убедитесь, что файлы WooCommerce больше не грузятся в Network.
  • Проверьте страницу товара, корзину и checkout — там всё должно работать как раньше.
  • Добавьте товар в корзину и убедитесь, что счётчик и мини-корзина обновляются.
  • Проверьте консоль браузера на ошибки JavaScript.
  • Если используете кэш-плагин, очистите кэш страницы и кэш браузера.

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

Частые ошибки и как их исправить

Отключили скрипты на всех страницах без исключений

Такое часто происходит, когда код вставляют без проверки is_cart(), is_checkout() и is_account_page(). В результате корзина открывается, но кнопки не работают или не обновляются фрагменты.

Исправление простое: сначала исключите все страницы WooCommerce, а потом уже расширяйте условия под конкретный шаблон.

Использовали неверные handle

У разных тем и плагинов список подключений может отличаться. Если вы пытаетесь снять стиль или скрипт с handle, которого нет в очереди, ничего не произойдёт. Смотрите фактические имена в исходнике страницы или через Query Monitor.

Сломали стили блоков WooCommerce

Если на сайте используются блоки корзины, мини-корзины или checkout blocks, отключение wc-block-style может повлиять на внешний вид. В этом случае лучше отключать только те ресурсы, которые вы точно не используете.

Не очистили кэш

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

Практические советы по безопасности и производительности

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

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

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

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

×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее