Диагностика проблемы с WooCommerce блоками в Gutenberg
WooCommerce добавляет собственные блоки в редактор Gutenberg, которые могут замедлять загрузку редактора, создавать конфликт с другими плагинами или просто не подходить по дизайну. Если вы заметили, что редактор загружается медленно или блоки WooCommerce не нужны, стоит рассмотреть их отключение. Проверить наличие блоков можно прямо в редакторе: при добавлении нового блока ищите категории WooCommerce и блоки типа "Product Grid", "Add to Cart" и другие.
Пошаговое решение: отключаем WooCommerce блоки через код
1. Добавление фильтра для удаления блоков
WooCommerce регистрирует блоки через хук woocommerce_register_block_type, но официального хука для массового отключения блоков нет. Поэтому удобнее использовать фильтр should_load_block_type или удалить скрипты блоков.
2. Отключение блоков с помощью фильтра should_load_block_type
Добавьте в functions.php вашей темы или в кастомный плагин следующий код:
add_filter('should_load_block_type', function($should_load, $block_name) {
$woocommerce_blocks = [
'woocommerce/product-grid',
'woocommerce/product-search',
'woocommerce/handpicked-products',
'woocommerce/product-categories',
'woocommerce/featured-product',
'woocommerce/active-filters',
'woocommerce/filters',
'woocommerce/price-filter',
'woocommerce/average-rating-filter',
'woocommerce/product-best-sellers',
'woocommerce/product-on-sale',
'woocommerce/product-new',
'woocommerce/reviews-by-product',
'woocommerce/add-to-cart',
'woocommerce/stock-filter',
];
if (in_array($block_name, $woocommerce_blocks)) {
return false; // Блок не будет загружен
}
return $should_load;
}, 10, 2);3. Отключение скриптов и стилей блоков WooCommerce
Если блоки не нужны и вы хотите убрать их ресурсы, используйте следующий код:
add_action('wp_enqueue_scripts', function() {
wp_dequeue_script('wc-blocks-vendors');
wp_dequeue_script('wc-blocks');
wp_dequeue_style('wc-blocks-style');
wp_dequeue_style('wc-blocks-vendors-style');
}, 100);Проверка результата после внедрения
- Перейдите в редактор страницы или записи и нажмите на добавление блока. В списке WooCommerce блоков не должно быть.
- Проверьте консоль браузера — скрипты
wc-blocks.jsи стилиwc-blocks.cssне должны загружаться. - Проверьте скорость загрузки редактора — она должна улучшиться.
Частые ошибки и как их исправить
- Блоки продолжают отображаться: убедитесь, что код добавлен в активную тему или плагин, а кеш браузера и плагинов кэширования очищен.
- Проблемы с отображением товаров на фронтенде: не отключайте скрипты WooCommerce без теста, если сайт использует блоки на страницах — это может сломать функционал.
- Ошибка при добавлении фильтра: проверьте правильность синтаксиса и используйте PHP 7.4+.
Практические советы по безопасности и производительности
- Отключая ненужные блоки, вы уменьшаете количество загружаемых скриптов и стилей — это снижает нагрузку и повышает скорость загрузки редактора и сайта.
- Всегда тестируйте изменения на тестовом сайте или в режиме отладки, чтобы избежать сбоев в работе WooCommerce.
- Если вы используете кэширование (например, Redis или плагин Clearfy Pro), очистите кеш после внесения изменений.
Сравнение способов отключения WooCommerce блоков
| Метод | Плюсы | Минусы |
|---|---|---|
Фильтр should_load_block_type | Простое удаление блоков из редактора без удаления скриптов | Скрипты и стили блоков могут остаться загружаться |
| Отключение скриптов и стилей | Уменьшение нагрузки и ускорение сайта | Может сломать функционал, если блоки используются на фронтенде |
| Комбинация обоих методов | Максимальное отключение блоков и ресурсов | Требует тщательного тестирования |