Диагностика проблемы: почему WooCommerce замедляет загрузку сайта
WooCommerce по умолчанию подключает множество скриптов и стилей на всех страницах сайта, даже если функционал магазина используется не везде. Это приводит к избыточной загрузке ресурсов, увеличивает время отклика и ухудшает пользовательский опыт. Чтобы определить, какие скрипты и стили WooCommerce загружаются на странице, используйте инструменты разработчика в браузере (DevTools) или плагины типа Query Monitor.
Например, в консоли можно увидеть загрузку таких файлов, как:
woocommerce.csswoocommerce-layout.csswc-cart-fragments.jsjquery-blockui.js
Если на большинстве страниц магазина вы не используете корзину или другие функции WooCommerce, эти ресурсы можно отключить.
Пошаговое решение: как отключить ненужные скрипты и стили WooCommerce
1. Отключение CSS WooCommerce на фронтенде
Для отключения стилей WooCommerce на страницах, где они не нужны, добавьте следующий код в functions.php вашей дочерней темы или в плагин функционала:
add_filter('woocommerce_enqueue_styles', '__return_empty_array');Это полностью отключит все стили WooCommerce.
2. Условное отключение скриптов и стилей
Если стили и скрипты нужны только на страницах магазина, корзины и оформления заказа, примените условную проверку:
function wpaction_dequeue_woocommerce_assets() {
if ( ! is_woocommerce() && ! is_cart() && ! is_checkout() ) {
wp_dequeue_style('woocommerce-general');
wp_dequeue_style('woocommerce-layout');
wp_dequeue_style('woocommerce-smallscreen');
wp_dequeue_script('wc-cart-fragments');
wp_dequeue_script('woocommerce');
wp_dequeue_script('wc-add-to-cart');
wp_dequeue_script('jquery-blockui');
}
}
add_action('wp_enqueue_scripts', 'wpaction_dequeue_woocommerce_assets', 99);Эта функция отключит основные скрипты и стили WooCommerce на всех страницах, кроме страниц магазина, корзины и оформления заказа.
3. Отключение ajax обновления корзины (wc-cart-fragments.js)
Скрипт wc-cart-fragments.js отвечает за обновление корзины без перезагрузки страницы, но он может замедлять сайт. Если не используете динамическую корзину, отключите его:
function wpaction_disable_cart_fragments() {
wp_dequeue_script('wc-cart-fragments');
}
add_action('wp_enqueue_scripts', 'wpaction_disable_cart_fragments', 99);Проверка результата после внедрения
- Откройте любую страницу сайта, где не используется WooCommerce, и проверьте через DevTools вкладку Network — скрипты и стили WooCommerce не должны загружаться.
- Проверить работу магазина, корзины и оформления заказа — все функции должны работать без ошибок.
- Для более точной проверки используйте плагин Query Monitor — в разделе «Скрипты и стили» убедитесь, что WooCommerce ресурсы отключены там, где не нужны.
Частые ошибки и как их исправить
- Ошибка: Отключение стилей ломает верстку страниц WooCommerce.
Причина: отключение стилей на страницах магазина или корзины.
Решение: убедитесь, что условиеis_woocommerce(),is_cart()иis_checkout()корректно настроено и стили отключаются только вне этих страниц. - Ошибка: После отключения
wc-cart-fragments.jsкорзина не обновляется динамически.
Причина: отключение ajax-обновления корзины.
Решение: отключайте только если динамическое обновление корзины не требуется. - Ошибка: Скрипты WooCommerce все равно загружаются на страницах.
Причина: хуки подключены с неправильным приоритетом.
Решение: используйте приоритет 99 или выше вadd_action('wp_enqueue_scripts', '...', 99).
Практические советы по производительности
- Используйте условное отключение для всех сторонних скриптов, которые не нужны на каждой странице.
- Кэшируйте страницы, чтобы снизить нагрузку на сервер.
- Минимизируйте и объединяйте стили и скрипты, но не объединяйте критичные для WooCommerce ресурсы с другими.
- Контролируйте версию WooCommerce и обновляйте только после тестирования отключения скриптов.
Сравнение способов отключения скриптов и стилей WooCommerce
| Метод | Описание | Плюсы | Минусы |
|---|---|---|---|
Фильтр woocommerce_enqueue_styles | Полное отключение всех стилей WooCommerce | Просто реализовать, быстро | Отключает стили во всех местах, может сломать магазин |
Условное отключение через wp_dequeue_script/style | Отключение по страницам, где не нужен WooCommerce | Гибкое, сохраняет функционал магазина | Требует корректного определения страниц |
Отключение только wc-cart-fragments.js | Отключение ajax-обновления корзины | Снижает нагрузку без потери стилей | Убирает динамическое обновление корзины |