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

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

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

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

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

WooCommerce хранит возможность включения/отключения отзывов в мета-поле _wc_review_enabled. По умолчанию, если отзывы включены, это поле отсутствует или равно yes. Чтобы отключить отзывы для конкретного товара, можно программно добавить мета-поле с значением no.

function disable_reviews_for_specific_products( $open, $post_id ) {
    // Список ID товаров для отключения отзывов
    $disabled_products = array(123, 456, 789); 

    if ( in_array( $post_id, $disabled_products ) ) {
        return false;
    }

    return $open;
}
add_filter( 'comments_open', 'disable_reviews_for_specific_products', 10, 2 );

Этот фильтр проверяет, открыт ли комментарий (отзыв) для товара, и отключает их для заданных ID.

2. Отключение отзывов для товаров определенной категории

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

function disable_reviews_for_category( $open, $post_id ) {
    if ( 'product' !== get_post_type( $post_id ) ) {
        return $open;
    }

    $categories_to_disable = array( 'digital-products', 'services' );

    foreach ( $categories_to_disable as $cat_slug ) {
        if ( has_term( $cat_slug, 'product_cat', $post_id ) ) {
            return false;
        }
    }

    return $open;
}
add_filter( 'comments_open', 'disable_reviews_for_category', 10, 2 );

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

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

function remove_reviews_tab_for_specific_products( $tabs ) {
    $disabled_products = array(123, 456);

    global $product;

    if ( ! $product ) {
        return $tabs;
    }

    if ( in_array( $product->get_id(), $disabled_products ) ) {
        unset( $tabs['reviews'] );
    }

    return $tabs;
}
add_filter( 'woocommerce_product_tabs', 'remove_reviews_tab_for_specific_products', 98 );

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

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

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

  • Ошибка: Отзывы всё ещё отображаются после добавления кода.
    Причина: Кэширование страниц или объектов.
    Решение: Очистите кэш сайта и браузера, отключите плагины кэширования на время проверки.
  • Ошибка: Вкладка отзывов не скрывается, хотя комментарии отключены.
    Причина: Пропущена фильтрация вкладок WooCommerce.
    Решение: Добавьте фильтр woocommerce_product_tabs как указано выше.
  • Ошибка: Код не работает для кастомных типов товаров или нестандартных шаблонов.
    Причина: Отсутствует проверка типа поста или глобальной переменной продукта.
    Решение: Добавьте проверки get_post_type() и используйте global $product.

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

  • Используйте фильтры, а не прямые изменения шаблонов, чтобы не потерять изменения при обновлении WooCommerce.
  • Списки ID товаров и категорий лучше хранить в настройках темы или плагина, чтобы не менять код при изменениях.
  • При большом количестве товаров используйте кеширование результатов has_term(), чтобы снизить нагрузку на базу.
  • Перед внесением изменений сделайте резервную копию сайта — можно использовать Clearfy Pro для удобной очистки и оптимизации базы после удаления отзывов.

Сравнение методов отключения отзывов

МетодГибкостьСложность внедренияВлияние на производительность
Отключение через фильтр comments_open по ID товаровВысокаяНизкаяМинимальное
Отключение по категории товаровСредняяСредняяСреднее (зависит от количества товаров)
Удаление вкладки отзывов через фильтрВысокаяНизкаяМинимальное
Ограничение доступа к страницам WordPress по ролям пользователей
26.03.2026
Как массово удалить мета-поля у записей в WordPress по определённым условиям
01.01.2026
Как создать динамическую таблицу в WordPress с помощью AJAX
25.12.2025
Как использовать REST API WordPress для создания кастомных эндпоинтов
08.02.2026
Как добавить автозаполнение форм в WordPress без плагинов
23.03.2026