Диагностика проблемы: зачем удалять кнопку корзины из меню WooCommerce
В некоторых случаях требуется убрать иконку корзины из меню WooCommerce, например, для сайтов с каталогом без возможности покупки, для упрощения интерфейса или для кастомных решений, где корзина реализуется по-другому. Обычно эта кнопка добавляется автоматически через тему или хуки WooCommerce и плагинов, что затрудняет ее простое удаление без вмешательства в код.
Где появляется кнопка корзины в WooCommerce и как ее найти
Кнопка корзины чаще всего выводится:
- через виджет WooCommerce Cart;
- через функцию
woocommerce_cart_link()в шаблонах темы; - через меню, если тема добавляет корзину автоматически;
- через хуки, например
wp_nav_menu_itemsилиwp_nav_menu.
Для точного определения места вывода нужно:
- Открыть исходный код страницы и найти HTML-код кнопки корзины (например,
<a class="cart-contents">или.woocommerce-cart). - Посмотреть в файлах темы (header.php, functions.php, template-parts/menu.php) вызовы
woocommerce_cart_link()или виджеты. - Проверить наличие фильтров и действий, которые добавляют корзину в меню через хуки.
Пошаговое решение: удаление кнопки корзины из меню без плагинов
1. Отключение виджета корзины
Если корзина выводится через виджет, зайдите в Внешний вид – Виджеты и удалите виджет WooCommerce Cart из всех областей с меню.
2. Удаление корзины из меню с помощью фильтра wp_nav_menu_items
Если корзина добавляется в меню через фильтр, можно отцепить этот фильтр или заменить функцию. Например, добавьте в functions.php вашей дочерней темы следующий код:
add_filter('wp_nav_menu_items', 'remove_woocommerce_cart_from_menu', 10, 2);
function remove_woocommerce_cart_from_menu($items, $args) {
if (isset($args->theme_location) && $args->theme_location === 'primary') { // замените 'primary' на вашу локацию меню
// Удаляем ссылку корзины по CSS классу
$items = preg_replace('/<li[^>]*class=".*?cart.*?"[^>]*>.*?<\/li>/i', '', $items);
}
return $items;
}Этот код удалит элемент меню с классом, содержащим слово "cart".
3. Удаление вызовов woocommerce_cart_link() из шаблонов
Если кнопка выводится напрямую через функцию, вам нужно найти в теме вызов woocommerce_cart_link() и закомментировать или удалить его, например в файле header.php или template-parts/header/menu.php.
Проверка результата после внедрения
После внесения изменений:
- Очистите кеш сайта и браузера.
- Откройте сайт в режиме инкогнито или другом браузере.
- Проверьте отсутствие иконки корзины в меню и на других страницах.
- Проверьте, что корзина функционирует, если она нужна, на страницах WooCommerce, например, на странице /cart/.
Частые ошибки и как их исправить
- Кнопка корзины не исчезла: возможно, корзина добавляется через JavaScript. Проверьте скрипты темы и плагинов.
- Удаление ломает верстку меню: используйте регулярное выражение аккуратно, чтобы не удалить лишние элементы. Можно заменить на более точный CSS класс.
- Изменения не применяются: проверьте, используете ли дочернюю тему, и что изменения внесены именно туда. Очистите кеш.
- Корзина не работает после удаления: убедитесь, что вы удаляли только кнопку в меню, а не функционал WooCommerce.
Практические советы по безопасности и производительности
- Не редактируйте напрямую файлы основной темы, используйте дочернюю.
- Избегайте множества регулярных выражений в фильтрах меню — это может замедлять загрузку.
- Для отладки используйте WP_DEBUG и консоль браузера.
- Если хотите временно скрыть корзину, проще использовать CSS:
.cart-contents { display: none !important; }— но это не удалит элемент из DOM.
Сравнение вариантов удаления кнопки корзины
| Метод | Преимущества | Недостатки |
|---|---|---|
| Удаление виджета | Просто, не требует кода | Работает только если корзина через виджет |
| Фильтр wp_nav_menu_items | Гибко, работает для меню | Нужны знания PHP и регулярных выражений |
| Удаление вызова в шаблонах | Полностью контролируемо | Требует редактирования файлов темы |
| CSS-скрытие | Очень просто, быстро | Элемент остается в DOM, SEO и производительность не улучшаются |