wpstuff.ru wordpress wpstuff.ru

Как отключить лишние скрипты вариаций WooCommerce на страницах без вариативных товаров

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

Ниже — рабочий способ отключить загрузку wc-add-to-cart-variation там, где она не нужна, и не сломать карточки вариативных товаров.

Когда проблема действительно есть

Сначала стоит убедиться, что вы боретесь именно с лишней загрузкой, а не с нужным скриптом. В WooCommerce вариации обслуживаются не только одним файлом, но в типовом сценарии именно wc-add-to-cart-variation отвечает за выбор атрибутов и обновление данных на карточке товара.

Как диагностировать

  • Откройте DevTools → Network и проверьте, загружается ли wc-add-to-cart-variation.js на страницах простых товаров, в каталоге или на статических страницах.
  • Посмотрите исходный HTML: если на странице нет формы вариативного товара, а скрипт всё равно подключён, есть смысл его убрать.
  • Проверьте, не завязаны ли на этот скрипт сторонние плагины или тема. Иногда разработчики используют его как точку инициализации для собственного JS.

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

Что можно отключить безопасно

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

ПодходПлюсыМинусы
Плагин для оптимизацииБыстро, без правки темыНе всегда есть точечный контроль над нужными скриптами
Код в дочерней теме или mu-pluginТочный контроль, предсказуемое поведениеНужна проверка после обновлений
Глобальное отключение скриптаМаксимально простоВысокий риск сломать вариативные товары

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

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

Самый практичный вариант — подключить небольшой фрагмент в functions.php дочерней темы или в собственный mu-plugin. Логика простая: если текущая страница — товар, и товар не вариативный, снимаем скрипт. На остальных типах страниц можно оставить его как есть или отключать по отдельному условию.

<?php
add_action( 'wp_enqueue_scripts', 'wpstuff_disable_wc_variation_script_where_not_needed', 20 );

function wpstuff_disable_wc_variation_script_where_not_needed() {
    if ( is_admin() ) {
        return;
    }

    if ( ! function_exists( 'is_product' ) || ! is_product() ) {
        return;
    }

    global $product;

    if ( ! $product instanceof WC_Product ) {
        $product = wc_get_product( get_the_ID() );
    }

    if ( $product && ! $product->is_type( 'variable' ) ) {
        wp_dequeue_script( 'wc-add-to-cart-variation' );
        wp_deregister_script( 'wc-add-to-cart-variation' );
    }
}

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

Если нужно отключать скрипт на страницах без вариативных товаров

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

Проверка результата после внедрения

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

  1. Откройте страницу простого товара и проверьте вкладку Network: wc-add-to-cart-variation.js не должен загружаться.
  2. Откройте вариативный товар и убедитесь, что селекты атрибутов работают, а цена и доступность обновляются.
  3. Проверьте консоль браузера на ошибки JavaScript после выбора вариации.
  4. Если используется кэш-плагин или CDN, очистите кэш и повторите тест в приватном окне.

Полезно сравнить исходный HTML до и после: если скрипт убрался, но на вариативной карточке всё ещё работает выбор атрибутов, значит условие подобрано правильно.

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

Скрипт отключили глобально

Это самая частая ошибка. В результате простые товары открываются нормально, а вариативные перестают реагировать на выбор атрибутов. Исправление простое: возвращайте скрипт и ограничивайте отключение только нужными шаблонами или типами товаров.

Проверяют только главную страницу

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

Не учитывают тему и конструктор

Некоторые темы и page builder'ы рендерят товарные блоки нестандартно. Если в шаблоне есть быстрый просмотр, вариативные карточки в модальном окне или AJAX-рендер, простая проверка is_product() может быть недостаточной.

Удаляют только enqueue, но не проверяют зависимости

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

Что сделать для безопасности и производительности

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

  • Сначала проверьте, есть ли у вас дочерняя тема.
  • Не отключайте скрипт, пока не убедились, что он не нужен на конкретной странице.
  • После обновлений WooCommerce повторно проверьте карточки товаров и корзину.
  • Если используете минифицированные сборки JS, тестируйте не только production-версию, но и страницу без кэша.

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

Короткий чек-лист перед публикацией

  • На простом товаре скрипт вариаций не загружается.
  • На вариативном товаре выбор атрибутов работает.
  • В консоли нет JS-ошибок.
  • Кэш очищен, тест выполнен в приватном окне.
  • Код лежит в дочерней теме или mu-plugin, а не в основной теме.

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

×

AI-плагин

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

SEO и мета-теги

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

Изображения

Комментарии

Подробнее