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

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

В стандартной установке WooCommerce отзывы включены для всех товаров. Иногда требуется отключить отзывы на конкретных товарах — например, если это цифровой продукт, услуга или товар с ограниченной обратной связью. Проблема в том, что WooCommerce не предоставляет простой интерфейс для отключения отзывов по товару, а плагины для этого часто избыточны или конфликтуют с кастомным функционалом.

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

1. Определяем, для каких товаров отключать отзывы

Варианты критериев отключения:

  • По ID товара
  • По категории
  • По атрибутам

2. Добавляем фильтр для отключения отзывов

Используем фильтр comments_open, чтобы запретить открытие комментариев (отзывов) на нужных товарах. Пример кода для отключения отзывов по ID товаров:

add_filter('comments_open', 'disable_reviews_for_specific_products', 10, 2); 
function disable_reviews_for_specific_products($open, $post_id) {
    // IDs товаров, для которых нужно отключить отзывы
    $excluded_products = array(123, 456, 789);
    
    if (in_array($post_id, $excluded_products)) {
        return false; // Закрыть отзывы
    }
    return $open;
}

3. Отключаем форму добавления отзыва и блок с отзывами на фронтенде

Можно дополнительно убрать таб с отзывами в шаблоне товара. Для этого используем фильтр woocommerce_product_tabs:

add_filter('woocommerce_product_tabs', 'remove_reviews_tab_for_specific_products', 98);
function remove_reviews_tab_for_specific_products($tabs) {
    global $product;
    $excluded_products = array(123, 456, 789);
    if (in_array($product->get_id(), $excluded_products)) {
        unset($tabs['reviews']);
    }
    return $tabs;
}

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

  1. Зайдите на страницу товара с отключенными отзывами (ID 123, 456, 789 из примера).
  2. Проверьте, что таб «Отзывы» отсутствует.
  3. Попробуйте открыть URL комментариев товара (https://example.com/product/product-slug/#reviews) — должна быть пустота или отсутствие формы.
  4. На других товарах отзывы должны работать как обычно.

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

  • Отзывы не отключаются для нужных товаров
    Проверьте, правильно ли указан ID товара. ID можно получить в админке WordPress в списке товаров или через консоль разработчика, вызвав console.log(woocommerce_product.get_id()).
  • Отзывы отключены для всех товаров
    Возможно, условие in_array написано неправильно или массив пуст. Убедитесь, что возвращаете $open для всех товаров, кроме нужных.
  • Фильтры не работают из-за приоритета
    Попробуйте изменить приоритет в add_filter (например, с 10 на 99), чтобы убедиться, что ваш фильтр срабатывает после других.
  • Отзывы отображаются в других местах (виджеты, страницы архива)
    Для полноты отключения проверяйте дополнительные места вывода отзывов и добавляйте аналогичную логику.

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

  • Добавляйте кастомный код в дочернюю тему или собственный плагин, чтобы избежать потери изменений при обновлении WooCommerce.
  • Не добавляйте тяжелую логику в фильтры — в нашем случае проверка массива ID очень легкая.
  • Используйте кэширование страниц, чтобы снизить нагрузку. Ваш код не влияет на кэш, так как просто меняет отображение.
  • Проверяйте, что код не конфликтует с плагинами, которые тоже меняют отзывы.

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

МетодПлюсыМинусы
Код через фильтр comments_open + удаление вкладкиМинимальный код, гибко настраивается по ID, категории, атрибутам, не требует плагиновТребует базовых знаний PHP, не влияет на другие места с отзывами
Плагины отключения отзывовПростая настройка через UI, обычно поддерживают массовое отключениеМогут конфликтовать с кастомным функционалом, нагрузка, избыточность
Отключение отзывов через свойства товара (редко доступно)Простота для конечного пользователяМало где реализовано, ограничения WooCommerce
Как удалить варианты товаров WooCommerce с помощью кода
22.04.2026
Как удалить варианты товаров WooCommerce по условию через код
23.05.2026
Как удалить плагин без ошибок в WordPress
20.11.2025
Как правильно отключить и удалить автозаполнение форм в WordPress без потери функциональности
03.06.2026
Как удалить и заблокировать спам в комментариях WordPress
20.03.2026