WooCommerce: автоматическое отключение отзывов для отдельных товаров

Когда и зачем отключать отзывы для отдельных товаров в WooCommerce

В стандартном WooCommerce отзывы включены для всех товаров. Но в реальных проектах часто требуется отключить отзывы только для определённых товаров — например, для цифровых товаров, сервисов или товаров, к которым отзывы неуместны. Решение должно быть точечным, чтобы не отключать отзывы глобально.

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

Если вы обнаружили, что у некоторых товаров включены отзывы, хотя их быть не должно, проверьте настройки и активные хуки. В WooCommerce отзывам отвечает вкладка reviews в шаблоне single-product/review.php, а их отображение контролируется через опцию 'comments_open'.

Проверьте также, не активированы ли глобальные плагины или функции, которые включают отзывы для всех товаров без исключения.

Пошаговое решение: как отключить отзывы для отдельных товаров через functions.php

Добавим фильтр, который отключит комментарии (отзывы) только для товаров с определённым условием. Например, отключим отзывы для товаров с определённой категорией или меткой.

add_filter('comments_open', 'disable_reviews_for_specific_products', 10, 2);
function disable_reviews_for_specific_products($open, $post_id) {
    if (get_post_type($post_id) === 'product') {
        // Пример: отключаем отзывы для товаров категории "digital"
        if (has_term('digital', 'product_cat', $post_id)) {
            return false;
        }
        // Можно добавить другие условия, например, по меткам или ID товаров
        // if (has_term('no-reviews', 'product_tag', $post_id)) {
        //     return false;
        // }
    }
    return $open;
}

Этот код проверяет, открыт ли комментарий для товара, и отключает его, если товар относится к категории digital.

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

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

Расширение решения: отключение отзывов по ID товара или метке

Иногда удобнее отключать отзывы для конкретных товаров по ID:

add_filter('comments_open', 'disable_reviews_by_product_ids', 10, 2);
function disable_reviews_by_product_ids($open, $post_id) {
    $disabled_ids = array(123, 234, 345); // ID товаров
    if (get_post_type($post_id) === 'product' && in_array($post_id, $disabled_ids)) {
        return false;
    }
    return $open;
}

Или по меткам:

add_filter('comments_open', 'disable_reviews_by_product_tag', 10, 2);
function disable_reviews_by_product_tag($open, $post_id) {
    if (get_post_type($post_id) === 'product' && has_term('no-reviews', 'product_tag', $post_id)) {
        return false;
    }
    return $open;
}

Чек-лист для отключения отзывов на отдельных товарах

  • Определить условие отключения (категория, метка, ID товара).
  • Добавить фильтр comments_open в functions.php или в кастомный плагин.
  • Проверить, что отзывы отключены на нужных товарах.
  • Убедиться, что на остальных товарах отзывы работают.
  • Очистить кеш сайта и браузера для корректного отображения.

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

  • Отзывы не отключаются: Возможно, другой плагин или тема переопределяет шаблон отзывов. Проверьте наличие переопределений в папке темы woocommerce/single-product/review.php.
  • Отзывы отключены глобально: Проверьте, не включена ли глобальная опция отключения комментариев в настройках WordPress или WooCommerce.
  • Кеширование мешает проверить изменения: Очистите кеш плагинов (например, WP Super Cache, W3 Total Cache) и браузера.
  • Код добавлен вне functions.php: Убедитесь, что код добавлен в файл темы functions.php или в кастомный плагин, и что он выполняется.

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

  • Добавляйте кастомный код в дочернюю тему или собственный плагин, чтобы избежать потери при обновлениях.
  • Минимизируйте количество сложных условий в фильтре comments_open, чтобы не замедлять загрузку страниц товаров.
  • Для очень большого каталога можно использовать transient-кеширование результатов проверки условий has_term, чтобы уменьшить нагрузку на базу данных.

Таблица сравнения вариантов отключения отзывов

МетодПлюсыМинусыКогда использовать
Фильтр comments_open с условиямиЛегко настраивается, гибкоНужно прописывать условия вручнуюТочное отключение для выбранных товаров
Отключение отзывов через настройки WooCommerceПросто, без кодаГлобально для всех товаровЕсли отзывы не нужны на сайте вообще
Плагины для контроля отзывовИнтерфейс, расширенный функционалДополнительная нагрузка, возможны конфликтыЕсли нужно много условий и управление через админку
Как исправить ошибку «Не открывается корзина WooCommerce»: практическое руководство
30.06.2026
Как отключить загрузку Google Fonts в WordPress для ускорения сайта
20.12.2025
Как удалить и заблокировать спам в комментариях WordPress
20.03.2026
Динамические breadcrumbs в WordPress с поддержкой WooCommerce: практическое руководство
13.03.2026
Как удалить варианты товаров WooCommerce через код без плагинов
04.05.2026