Диагностика проблемы с WooCommerce Gutenberg блоками
WooCommerce с версии 5.0 активно интегрирует собственные блоки для редактора Gutenberg, которые используются для отображения товаров, категорий, кнопок и т.п. Но в некоторых случаях эти блоки могут конфликтовать с кастомными темами или плагинами, вызывать ошибки отображения, снижать производительность или мешать кастомизации макета. Особенно актуально, если вы используете классический редактор или сторонние конструкторы страниц.
Как понять, что проблема именно в блоках WooCommerce?
- При редактировании или просмотре страниц с товарами в Gutenberg вы видите ошибки JavaScript в консоли браузера (откройте F12 → Console).
- Некоторые блоки WooCommerce не отображаются корректно или вызывают конфликт стилей.
- Вам не нужны стандартные блоки WooCommerce, потому что вы реализуете вывод товаров вручную через шаблоны.
- Падение скорости загрузки страниц, связанное с загрузкой скриптов и стилей блоков.
Пошаговое решение: отключение блоков WooCommerce в Gutenberg
Для отключения блоков WooCommerce в редакторе Gutenberg можно использовать фильтр woocommerce_blocks_register_block_type, который отвечает за регистрацию блоков. Это самый безопасный способ, не затрагивающий логику отображения на фронтенде.
Вот пример кода для functions.php вашей темы или отдельного плагина:
add_filter('woocommerce_blocks_register_block_type', '__return_false');Этот фильтр полностью отключает регистрацию всех блоков WooCommerce. Если нужно отключить только конкретные блоки, придется использовать более тонкую настройку, например, отключать скрипты и стили блоков или модифицировать их через wp_dequeue_script.
Отключение скриптов и стилей блоков WooCommerce selectively
Если блоки нужны, но вы хотите отключить их загрузку на определенных страницах, используйте следующий код:
function disable_woocommerce_blocks_assets() {
if ( ! is_product() && ! is_shop() && ! is_product_category() ) {
wp_dequeue_script('wc-blocks-vendors');
wp_dequeue_script('wc-blocks');
wp_dequeue_style('wc-blocks-style');
}
}
add_action('wp_enqueue_scripts', 'disable_woocommerce_blocks_assets', 100);Этот код отключит блоки WooCommerce на всех страницах, кроме страниц товаров, каталога и категорий.
Проверка результата после внедрения
- Очистите кэш сайта и браузера.
- Перейдите в редактор Gutenberg и убедитесь, что блоки WooCommerce отсутствуют в списке доступных.
- Проверьте консоль браузера на отсутствие ошибок JavaScript.
- Посетите страницы товаров и каталога на фронтенде, чтобы убедиться, что отображение товаров осталось корректным.
- Проверьте скорость загрузки страниц с помощью инструментов типа GTmetrix или PageSpeed Insights — должны уменьшиться запросы к скриптам и стилям WooCommerce Blocks.
Частые ошибки и как их исправить
- Ошибка: После отключения блоков на фронтенде перестали отображаться товары.
Причина: Фильтр отключает регистрацию блоков, что может повлиять на некоторые функции, если вы используете блоки для вывода.
Решение: Используйте выборочное отключение скриптов и стилей, а не полный фильтр. - Ошибка: Ошибки в консоли JavaScript после отключения блоков.
Причина: Другие плагины или тема пытаются вызвать функции блоков.
Решение: Проверьте, нет ли зависимостей от блоков, отключите их или исправьте вызовы. - Ошибка: Блоки WooCommerce по-прежнему доступны в редакторе.
Причина: Кэширование скриптов или кеш плагинов.
Решение: Очистите все кэши, отключите их временно для проверки.
Практические советы по безопасности и производительности
- Не отключайте блоки, если они используются на сайте для контента — это вызовет проблемы с отображением.
- Используйте выборочное отключение скриптов и стилей, чтобы не ломать функционал.
- Регулярно обновляйте WooCommerce и Gutenberg для совместимости.
- Если используете Clearfy Pro, рассмотрите его возможности для управления скриптами и блоками WooCommerce через интерфейс — это безопаснее и удобнее.
Сравнение методов отключения блоков WooCommerce
| Метод | Плюсы | Минусы | Когда использовать |
|---|---|---|---|
Фильтр woocommerce_blocks_register_block_type | Полное отключение блоков, простой код | Может влиять на фронтенд и функционал блоков | Если блоки не нужны совсем |
| Выборочное отключение скриптов и стилей | Гибкий контроль, не ломает вывод товаров | Требует точной настройки страниц | Если блоки нужны на некоторых страницах |
| Использование плагинов для управления блоками | Удобный UI, настройки без кода | Зависимость от сторонних решений | Для администраторов без навыков программирования |