Диагностика проблемы: зачем отключать WooCommerce Gutenberg блоки
WooCommerce с версии 5.5 включает поддержку Gutenberg-блоков для отображения продуктов, категорий, фильтров и других элементов магазина. Хотя эти блоки удобны для визуальной сборки страниц, они могут конфликтовать с кастомным дизайном, замедлять загрузку или создавать избыточный код. Часто на маркетинговых сайтах требуется полный контроль над выводом или использование классического редактора.
Чтобы понять, активны ли блоки WooCommerce Gutenberg на вашем сайте, откройте редактор страниц и проверьте наличие блоков с названиями, начинающимися на woocommerce/. Если вы используете классический редактор, блоки автоматически не отображаются.
Пошаговое решение: отключение WooCommerce Gutenberg блоков без плагинов
1. Отключение регистрации Gutenberg блоков WooCommerce
WooCommerce регистрирует свои блоки через хук init с приоритетом 20. Чтобы не загружать эти блоки, нужно удалить действие, отвечающее за регистрацию блоков.
function disable_woocommerce_gutenberg_blocks() {
remove_action( 'init', array( 'Automattic\WooCommerce\Blocks\Assets', 'register_block_type' ), 20 );
}
add_action( 'init', 'disable_woocommerce_gutenberg_blocks', 1 );Однако данная функция может не сработать во всех версиях, так как WooCommerce инкапсулирует блоки в собственных пространствах имён. Поэтому более универсальный способ — отключить поддержку блоков через фильтр woocommerce_blocks_is_enabled:
add_filter( 'woocommerce_blocks_is_enabled', '__return_false' );2. Отключение стилей и скриптов блоков
Даже после отключения регистрации блоков WooCommerce может загружать свои CSS и JS файлы для блоков. Их можно отключить так:
function dequeue_woocommerce_blocks_assets() {
wp_dequeue_style( 'wc-block-style' );
wp_dequeue_script( 'wc-blocks-vendors-style' );
wp_dequeue_script( 'wc-blocks-style' );
}
add_action( 'wp_enqueue_scripts', 'dequeue_woocommerce_blocks_assets', 100 );Проверка результата после внедрения
1. В админке откройте любой пост или страницу с редактором Gutenberg и проверьте, исчезли ли блоки с префиксом woocommerce/.
2. На фронтенде убедитесь, что стили и скрипты для блоков не загружаются. Используйте инструменты разработчика браузера (Network и Sources) для проверки отсутствия wc-block-style.css и связанных JS.
3. Проверьте, что страницы магазина корректно отображаются после отключения блоков, и кастомный вывод работает без сбоев.
Частые ошибки и как их исправить
- Блоки WooCommerce всё ещё доступны в редакторе — проверьте, не подключён ли плагин, который принудительно включает блоки (например, WooCommerce Blocks). Попробуйте добавить фильтр
woocommerce_blocks_is_enabledкак ранний приоритет. - Стили WooCommerce блоков загружаются — убедитесь, что
wp_dequeue_styleвызывается с приоритетом 100 или выше, чтобы перехватить регистрацию стилей WooCommerce. - Конфликты с кэшированием — после внесения изменений очистите кэш сайта и браузера, а также кэш систем CDN, если они используются.
Практические советы по безопасности и производительности
- Отключение Gutenberg блоков WooCommerce уменьшает загрузку CSS и JS, что снижает время отклика страниц.
- Избегайте установки плагинов для отключения блоков, если можно сделать это в теме — так сокращается нагрузка и вероятность конфликтов.
- Если в будущем планируется использовать блоки, сделайте переключатель в настройках темы для включения/отключения.
Сравнение способов отключения WooCommerce Gutenberg блоков
| Метод | Плюсы | Минусы |
|---|---|---|
Фильтр woocommerce_blocks_is_enabled | Простой, универсальный, не требует сложного кода | Может не работать с кастомными сборками WooCommerce |
Удаление действия remove_action | Точный контроль над регистрацией блоков | Зависит от версии WooCommerce и внутренней реализации |
Отключение стилей и скриптов через wp_dequeue_style | Обеспечивает полное отключение визуальных и JS ресурсов | Не отключает сами блоки в редакторе |