WooCommerce: автоматическое отключение отзывов по условиям

Диагностика проблемы: когда и почему нужно отключать отзывы в WooCommerce

В стандартной установке WooCommerce отзывы включены для всех товаров без исключения. Однако на практике бывают ситуации, когда необходимо отключать отзывы автоматически по определённым условиям: например, для товаров с определённой категорией, товаров с низким рейтингом или товаров, которые сняты с продажи.

Если отзывы не отключать вовремя, это может привести к негативному пользовательскому опыту, появлению нерелевантных комментариев или даже снижению SEO-рейтинга из-за спама.

Как проверить, что отзывы включены и работают по умолчанию

  • Перейдите в настройки WooCommerce → Товары → Отзывы — убедитесь, что опция "Включить отзывы" активна.
  • Откройте страницу товара и проверьте наличие вкладки "Отзывы".
  • Для диагностики можно временно выключить отзывы глобально и проверить, исчезнет ли вкладка.

Пошаговое решение: отключение отзывов по условиям через код

Ниже рассмотрим пример, как отключить отзывы на страницах товаров из определённой категории, например, "без отзывов".

1. Определение условия отключения

Используем хук comments_open, который отвечает за разрешение комментариев (отзывов) на постах и товарах. Если вернуть false, отзывы будут отключены.

2. Пример кода для functions.php темы или плагина

add_filter('comments_open', function($open, $post_id) {
    if (get_post_type($post_id) !== 'product') {
        return $open; // отключаем только для товаров
    }

    // Проверяем, есть ли у товара категория 'bez-otzyvov'
    if (has_term('bez-otzyvov', 'product_cat', $post_id)) {
        return false; // отключаем отзывы
    }
    return $open;
}, 10, 2);

3. Отключение вкладки "Отзывы" на страницах товаров

В случае, если тема выводит отзывы в отдельной вкладке, её нужно скрыть, чтобы не появлялась пустая вкладка. Добавим фильтр для WooCommerce:

add_filter('woocommerce_product_tabs', function($tabs) {
    global $product;
    if (!$product) return $tabs;

    if (has_term('bez-otzyvov', 'product_cat', $product->get_id())) {
        unset($tabs['reviews']);
    }
    return $tabs;
});

Проверка результата после внедрения

  • Откройте страницу товара из категории bez-otzyvov. Вкладка "Отзывы" должна отсутствовать.
  • Попробуйте оставить отзыв — форма оставить отзыв не должна отображаться.
  • Для товаров из других категорий функционал отзывов должен работать как обычно.

Частые ошибки и как их исправить

  • Ошибка: отзывы по-прежнему отображаются на товарах из категории.
    Причина: неверно указан слаг категории или категория не назначена.
    Решение: Проверьте slug категории в админке WooCommerce → Товары → Категории и убедитесь, что он совпадает с тем, что в коде.
  • Ошибка: вкладка отзывов исчезает на всех товарах.
    Причина: условие отключения не ограничено типом поста или категорией.
    Решение: Проверьте, что проверка get_post_type($post_id) === 'product' и has_term() прописана корректно.
  • Ошибка: после обновления WooCommerce отзывы снова включились.
    Причина: код добавлен в файл темы, которая обновляется.
    Решение: переносить кастомные фильтры в дочернюю тему или в отдельный плагин.

Практические советы по безопасности и производительности

  • Всегда проверяйте, что get_post_type() и has_term() вызываются с валидным ID поста, чтобы избежать ошибок.
  • Использование фильтров лучше, чем прямое редактирование шаблонов темы, так как это сохраняет совместимость с обновлениями WooCommerce.
  • При большом количестве товаров и условий отключения стоит кешировать результаты проверки условия с помощью Transient API, чтобы снизить нагрузку на базу данных.

Сравнение способов отключения отзывов в WooCommerce

МетодОписаниеПлюсыМинусы
Глобальное отключение в настройках WooCommerceВыключить отзывы для всех товаровПросто и быстроНет гибкости, отзывы отключаются для всех товаров
Отдельный плагин для управления отзывамиПлагины с условным отключением отзывовУдобный интерфейс, расширенный функционалДополнительная нагрузка, зависимость от стороннего кода
Кастомный код с фильтрами (предложенный способ)Отключение отзывов по категории или другим условиямГибко, легко настраивается, минимальная нагрузкаТребуется знание PHP, может сломаться при ошибках
Использование Transient API для кэширования данных в WordPress
09.04.2026
WooCommerce: автоматическое удаление отсутствующих товаров по расписанию
03.07.2026
Как создать автоматические заголовки для постов в WordPress
22.12.2025
Как создать автоматические редиректы в WordPress без плагинов
06.02.2026
Как создать автоматические нотификации в WordPress через Webhook
26.02.2026