Что такое авто-знаки (automatic badges) в WooCommerce и зачем их отключать
Авто-знаки (или бейджи) в WooCommerce — это визуальные метки, которые автоматически добавляются к товарам, например, «Новинка», «Распродажа» или «Хит». Они помогают привлечь внимание покупателей, но иногда мешают кастомному дизайну или вызывают конфликт с темой и плагинами.
Задача: убрать эти авто-знаки без потери основной функциональности товаров и без правки исходников плагина.
Диагностика проблемы: как понять, что авто-знаки создаются WooCommerce или темой
- Проверьте исходный код страницы товара: если бейджи создаются через CSS-классы типа
onsaleили через хуки WooCommerce, значит это стандартные авто-знаки. - Отключите все кастомные плагины, оставьте только WooCommerce и тему — если знаки пропадают, вероятно, они добавляются через сторонний плагин.
- Если в теме есть папка
woocommerceс файлами переопределенияsale-flash.phpили похожими, она может добавлять собственные бейджи.
Пошаговое решение: отключение авто-знаков через код
WooCommerce использует хук woocommerce_sale_flash для вывода бейджа «Sale». Обычный способ — удалить этот хук или перезаписать функцию вывода.
1. Отключение стандартного бейджа «Sale»
remove_action('woocommerce_before_shop_loop_item_title', 'woocommerce_show_product_loop_sale_flash', 10);
remove_action('woocommerce_before_single_product_summary', 'woocommerce_show_product_sale_flash', 10);
Добавьте этот код в functions.php вашей дочерней темы.
2. Отключение кастомных бейджей из темы или плагинов
Если вы нашли в теме или плагинах фильтр woocommerce_sale_flash, можно перезаписать его, чтобы вернуть пустой результат:
add_filter('woocommerce_sale_flash', '__return_empty_string');
3. Отключение других авто-знаков (например, «Новинка»)
Если используются дополнительные бейджи, которые не стандартные, нужно определить, как они добавляются (обычно через хуки или фильтры в плагинах). Чаще всего это:
- Фильтры на
woocommerce_product_get_rating_html - Вывод через шорткоды или кастомные функции в шаблонах
Отключите или перепишите соответствующие функции, например:
remove_action('woocommerce_before_shop_loop_item_title', 'custom_new_badge_function', 15);
Проверка результата после внедрения
- Очистите кеш браузера и кеш сайта (если есть кэширование).
- Перейдите на страницу каталога и отдельного товара — бейджи «Sale» и «Новинка» должны отсутствовать.
- Проверьте, что цены и другие элементы товара отображаются корректно.
- Для точной проверки используйте инструменты разработчика в браузере (F12) — убедитесь, что элементы с классом
onsaleне выводятся.
Частые ошибки и как их исправить
- Код не работает после обновления темы или WooCommerce: всегда используйте дочернюю тему для кастомизаций, чтобы изменения не были перезаписаны.
- Бейджи остаются, несмотря на удаление хуков: проверьте кастомный CSS и JavaScript, которые могут добавлять эти элементы динамически.
- Отключение бейджей приводит к ошибкам в шаблонах: убедитесь, что удаление хуков не ломает верстку, проверьте консоль браузера на наличие JS-ошибок.
- Использование метода
add_filter('woocommerce_sale_flash', '__return_empty_string');не убирает бейджи: возможно, они добавляются кастомными функциями — найдите и отключите их.
Практические советы по безопасности и производительности
- Не редактируйте напрямую файлы плагинов WooCommerce — используйте хуки и фильтры.
- Добавляйте кастомный код в дочернюю тему или в плагин-сниппет, чтобы избежать потери изменений при обновлении.
- Отключение ненужных элементов уменьшает нагрузку на клиентскую часть и ускоряет загрузку страниц.
- Используйте инструменты профилирования (например, Query Monitor) для оценки влияния изменений на производительность.
Сравнение способов отключения авто-знаков
| Метод | Преимущества | Недостатки | Пример кода |
|---|---|---|---|
| Удаление хука (remove_action) | Простой, работает с базовыми бейджами | Не работает с кастомными бейджами | remove_action('woocommerce_before_shop_loop_item_title', 'woocommerce_show_product_loop_sale_flash', 10); |
| Фильтр пустого значения (add_filter) | Универсальный, переопределяет вывод | Может не работать с полностью кастомным выводом | add_filter('woocommerce_sale_flash', '__return_empty_string'); |
| Удаление кастомных функций (remove_action по кастомным хукам) | Точный контроль, подходит для любых бейджей | Требует изучения кода темы/плагина | remove_action('woocommerce_before_shop_loop_item_title', 'custom_new_badge_function', 15); |
Итог
Отключение авто-знаков в WooCommerce — задача, решаемая через грамотное использование хуков и фильтров. Главное — понимать источник добавления бейджей и не вносить изменения напрямую в плагины. Если нужна помощь в более сложной кастомизации, рекомендуем использовать проверенные плагины для управления WooCommerce или обратиться к расширениям от WPShop, например, Clearfy Pro для оптимизации и чистки сайта.