Диагностика проблемы: зачем отключать сравнение товаров в WooCommerce
В стандартном WooCommerce функционала сравнения товаров нет, но многие темы и дополнительные плагины добавляют эту возможность для удобства покупателей. Однако, иногда сравнение товаров может мешать: замедлять сайт, конфликтовать с кастомными настройками или просто не соответствовать бизнес-задачам. Если у вас активировано сравнение товаров, но вы хотите его отключить без установки дополнительных плагинов, этот материал будет полезен.
Определяем источник функции сравнения товаров
Для начала нужно понять, откуда вообще берётся функционал сравнения в вашем магазине:
- Активирован ли плагин сравнения (например, WooCommerce Compare, YITH WooCommerce Compare и другие).
- Добавляет ли тема функцию сравнения по умолчанию.
- Используются ли кастомные скрипты или хуки в functions.php для реализации сравнения.
Проверить наличие соответствующих плагинов можно в wp-admin/plugins.php. Если плагинов нет, смотрим в файлах темы (обычно functions.php или папка inc) наличие функций с ключевым словом compare, compare_products и т.п.
Пошаговое решение: отключение сравнения товаров без плагинов
1. Отключение через functions.php
Если функция сравнения добавлена через хук, можно удалить её следующим кодом в functions.php активной темы (желательно дочерней):
function disable_product_comparison() {
// Пример для удаления действия, добавляющего кнопку сравнения
remove_action('woocommerce_after_shop_loop_item', 'yourtheme_compare_button_function', 20);
// Удаляем скрипты и стили сравнения, если они подключены
wp_dequeue_script('compare-scripts-handle');
wp_dequeue_style('compare-styles-handle');
}
add_action('wp_enqueue_scripts', 'disable_product_comparison', 100);Замените yourtheme_compare_button_function и compare-scripts-handle на реальные имена функций и хендлов. Их можно найти через просмотр исходника страниц и файлов темы.
2. Удаление шорткодов сравнения
Если на страницах используется шорткод сравнения, его можно отключить так:
remove_shortcode('compare_products');Добавьте этот код в functions.php. Это предотвратит отображение шорткода, если он используется.
3. Удаление виджетов сравнения
Если в сайдбаре есть виджет сравнения, удалите его в Внешний вид > Виджеты или через код:
function unregister_compare_widgets() {
unregister_widget('WC_Widget_Product_Compare');
}
add_action('widgets_init', 'unregister_compare_widgets', 11);Убедитесь, что класс виджета существует, иначе этот код вызовет ошибку.
4. Очистка сессий и cookie
Функции сравнения часто используют сессии или cookie для хранения выбранных товаров. Можно очистить эти данные, чтобы полностью убрать остатки функционала:
function clear_compare_session() {
if ( isset($_COOKIE['compare_products']) ) {
setcookie('compare_products', '', time() - 3600, COOKIEPATH, COOKIE_DOMAIN);
}
if ( isset($_SESSION['compare_products']) ) {
unset($_SESSION['compare_products']);
}
}
add_action('init', 'clear_compare_session');Этот код удалит куки и сессионные данные с ключом compare_products, если они есть.
Проверка результата после внедрения
- Обновите кэш сайта и браузера.
- Перейдите на страницу каталога и убедитесь, что кнопки или ссылки сравнения товаров отсутствуют.
- Проверьте исходный код страницы (Ctrl+U), чтобы в HTML не было элементов сравнения.
- Убедитесь, что при добавлении товаров в сравнение куки не создаются (через инструменты разработчика в браузере).
- Если были виджеты, они должны исчезнуть из боковых панелей.
Частые ошибки и как их исправить
- Ошибка: Кнопки сравнения всё ещё отображаются.
Причина: Скрытие через CSS или JavaScript, а не через удаление функций.
Решение: Найдите и удалите PHP-обработчики, отключите скрипты и стили. - Ошибка: Ошибки PHP после вставки кода.
Причина: Использование неправильных имён функций или классов.
Решение: Проверьте точные имена в теме и плагинах, используйтеfunction_exists()иclass_exists()для проверки перед удалением. - Ошибка: Операция не работает из-за кэширования.
Решение: Очистите кэш сайта и браузера, выключите кэширующие плагины на время теста.
Практические советы по производительности и безопасности
- Удаляйте неиспользуемые скрипты и стили сравнения, чтобы не нагружать фронтенд.
- Очистка сессий и cookie предотвратит утечки данных и сохранение устаревших параметров.
- Используйте дочернюю тему для внесения изменений, чтобы не потерять их при обновлениях.
- Регулярно проверяйте работу сайта после обновлений темы и WooCommerce, чтобы избежать возвращения функционала сравнения.
Сравнение способов отключения сравнения товаров
| Метод | Плюсы | Минусы |
|---|---|---|
| Удаление через functions.php | Полный контроль, без плагинов | Требует знаний, поиск правильных функций |
| Отключение плагина сравнения | Простота, быстрое отключение | Потеря других функций плагина, если нужны |
| Удаление виджетов через админку | Без кода, удобно для новичков | Может не убрать кнопки в товарах или шорткод |