Почему стоит отключать скрипты WooCommerce на нецелевых страницах
WooCommerce загружает множество CSS и JS файлов на всех страницах сайта по умолчанию. Это негативно влияет на скорость загрузки, особенно если большая часть страниц не связана с магазином. Например, на блоге или страницах лендинга не нужны стили и скрипты WooCommerce. Отключение неиспользуемых скриптов уменьшит время загрузки и снизит нагрузку на сервер.
Диагностика: как определить, какие скрипты загружаются и где
Для диагностики загрузки ресурсов используйте инструменты разработчика в браузере (Chrome DevTools, Firefox Developer Tools): вкладка Network покажет все загруженные файлы CSS и JS. Обратите внимание на файлы с префиксом woocommerce или содержащие woocommerce в названии.
Также можно использовать плагин Query Monitor, который покажет активные скрипты и стили на каждой странице.
Пошаговое решение: отключение скриптов WooCommerce на страницах без магазина
1. Определяем страницы, где WooCommerce не нужен
Например, если у вас блог и отдельные страницы, где нет элементов WooCommerce, можно отключить скрипты на всех страницах, кроме страниц магазина, корзины, оформления заказа и аккаунта.
2. Добавляем код в functions.php или в собственный плагин
Ниже пример кода, который отключает стили и скрипты WooCommerce на всех страницах, кроме ключевых:
add_action('wp_enqueue_scripts', 'disable_woocommerce_scripts_styles', 99);
function disable_woocommerce_scripts_styles() {
if ( function_exists('is_woocommerce') ) {
// Проверяем, находимся ли на страницах WooCommerce
if ( !is_woocommerce() && !is_cart() && !is_checkout() && !is_account_page() ) {
// Отключаем стили WooCommerce
wp_dequeue_style('woocommerce-general');
wp_dequeue_style('woocommerce-layout');
wp_dequeue_style('woocommerce-smallscreen');
// Отключаем скрипты WooCommerce
wp_dequeue_script('wc-cart-fragments');
wp_dequeue_script('woocommerce');
wp_dequeue_script('wc-checkout');
wp_dequeue_script('wc-add-to-cart');
wp_dequeue_script('jquery-blockui');
wp_dequeue_script('jquery-placeholder');
wp_dequeue_script('woocommerce-password-strength-meter');
}
}
}3. Дополнительная проверка для AJAX и кастомных страниц
Если у вас есть кастомные страницы с элементами WooCommerce, добавьте их в условие, например, по ID или шаблону.
Проверка результата после внедрения
- Откройте страницу без магазина и проверьте вкладку
Networkв DevTools, убедитесь, что стили и скрипты WooCommerce не загружаются. - Перейдите на страницу магазина, корзины или оформления заказа — стили и скрипты должны быть подключены.
- Проверьте функциональность элементов WooCommerce на страницах магазина (корзина, кнопки добавления в корзину).
Частые ошибки при отключении скриптов WooCommerce и как их исправить
- Ошибка: Отключение нужных скриптов на страницах магазина приводит к неработающим кнопкам добавления в корзину.
Решение: Проверьте условия, чтобы страницы с элементами WooCommerce не попадали под отключение. - Ошибка: Скрипты не отключаются из-за приоритетов хуков.
Решение: Используйте приоритет 99 или выше вadd_actionдля корректного удаления скриптов. - Ошибка: PHP-функция
is_woocommerce()возвращает false на AJAX запросах.
Решение: Добавляйте дополнительные проверки, если нужно отключать скрипты для AJAX, например, проверяйтеDOING_AJAXиwp_doing_ajax().
Практические советы по безопасности и производительности
- Не отключайте скрипты и стили на страницах, где они нужны — это может сломать функционал и повлиять на UX.
- Если используете кэширование (например, плагин кеша или серверный кеш), очистите его после внесения изменений, чтобы увидеть эффект.
- Для минимизации количества HTTP-запросов комбинируйте и минифицируйте CSS и JS с помощью специализированных плагинов или сборщиков (например, WP Rocket, Autoptimize).
- Используйте
wp_dequeue_scriptиwp_dequeue_styleтолько для скриптов и стилей, зарегистрированных через WordPress API — у WooCommerce это работает корректно.
Сравнение способов отключения скриптов WooCommerce
| Метод | Плюсы | Минусы |
|---|---|---|
| Отключение через код (wp_dequeue_*) | Контроль над страницами, гибкость, без сторонних плагинов | Нужны знания PHP, возможны ошибки при неправильных условиях |
| Плагины оптимизации (например, Asset CleanUp, Perfmatters) | Удобный интерфейс, быстрая настройка | Дополнительные плагины, нагрузка, иногда конфликтуют с WooCommerce |
| Отключение на уровне темы (условные загрузки) | Интеграция с темой, хорошо для кастомных решений | Может быть сложно поддерживать при смене темы |