Диагностика проблемы: зачем отключать сравнение товаров в WooCommerce
В стандартных установках WooCommerce нет функции сравнения товаров, но часто этот функционал добавляют с помощью плагинов или кастомных решений. Если в личном кабинете появляется возможность сравнивать товары, которая мешает пользователям или вызывает ошибки, требуется точечное отключение этой функции без удаления всего личного кабинета.
Чаще всего проблема проявляется так:
- Появляется лишняя вкладка или раздел "Сравнение товаров" в личном кабинете;
- В коде темы или плагина есть вызовы функций, отвечающих за сравнение;
- Это влияет на UX, ведёт к ошибкам или конфликтам с другими плагинами.
Как найти и отключить функционал сравнения товаров
Шаг 1. Определить источник функции сравнения
Проверьте, не установлен ли плагин для сравнения товаров, например, YITH WooCommerce Compare или аналоги. Если плагин есть, деактивируйте его временно и проверьте, исчез ли раздел в личном кабинете.
Если плагина нет, значит функционал добавлен темой или кастомным кодом.
Шаг 2. Поиск хуков и шорткодов в теме
В папке активной темы выполните поиск по ключевым словам compare, comparison, woocommerce_account в файлах functions.php и шаблонах woocommerce. Особенно обратите внимание на функции с префиксом add_action('woocommerce_account_... и фильтры.
grep -rn 'compare' wp-content/themes/your-theme/Если нашли хук типа:
add_action('woocommerce_account_compare_endpoint', 'your_compare_function');его можно удалить с помощью remove_action в functions.php дочерней темы или в плагине с кастомным кодом:
remove_action('woocommerce_account_compare_endpoint', 'your_compare_function');Шаг 3. Удаление эндпоинта сравнения из личного кабинета
Если добавлен кастомный эндпоинт для сравнения, его нужно удалить:
function wpmax_remove_compare_endpoint() {
remove_rewrite_endpoint('compare');
}
add_action('init', 'wpmax_remove_compare_endpoint');После этого сбросьте правила постоянных ссылок в админке Настройки > Постоянные ссылки (нажать "Сохранить изменения" без правок).
Проверка результата после внедрения
1. Авторизуйтесь под пользователем и перейдите в личный кабинет.
2. В меню должен исчезнуть пункт "Сравнение товаров" или аналогичный.
3. Попробуйте перейти по URL с эндпоинтом сравнения, например, /my-account/compare/ — должна быть 404 ошибка.
4. Проверьте консоль браузера на отсутствие JS-ошибок, которые могли бы быть связаны с этим функционалом.
Частые ошибки и как их исправить
- Ошибка: пункт "Сравнение" остался после удаления плагина.
Причина: функция добавлена в тему или другой плагин.
Решение: ищите и отключайте черезremove_actionили удаляйте кастомный эндпоинт. - Ошибка: при удалении эндпоинта появляется 500 ошибка.
Причина: неправильно удалён эндпоинт или сброшены ссылки некорректно.
Решение: сбросьте правила постоянных ссылок в админке, убедитесь, что хукremove_rewrite_endpointвызывается вinit. - Ошибка: ошибка JS в личном кабинете после отключения функции.
Причина: остались вызовы скриптов, завязанных на сравнение.
Решение: удалите подключение скриптов по условиюis_account_page()и проверьте зависимости.
Практические советы по безопасности и производительности
- При отключении функционала не удаляйте напрямую файлы плагинов, используйте деактивацию через админку или код.
- Для удаления кастомных эндпоинтов всегда делайте сброс правил постоянных ссылок.
- Используйте дочернюю тему для правок, чтобы не потерять изменения при обновлениях.
- Проверьте, что кастомный код не вызывает лишних запросов к базе или скриптов, которые не нужны после удаления функции.
Сравнение вариантов отключения функции сравнения товаров
| Метод | Плюсы | Минусы | Пример кода |
|---|---|---|---|
| Деактивация плагина сравнения | Простота, быстрое отключение | Потеря всей функциональности, возможны ошибки в теме | deactivate_plugins('yith-woocommerce-compare/init.php'); |
| Удаление кастомного эндпоинта | Точное отключение, сохранение других функций | Нужны навыки поиска и правки кода | |
| Удаление шаблонов сравнения из темы | Гибкость, можно изменить отображение | Требует знания структуры темы и WooCommerce | Удаление файлов или условное исключение шаблонов |