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

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

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

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

1. Отключение отзывов через метаполе товара

Первый способ — добавить пользовательское поле (метаполе) в карточку товара, которое будет отвечать за включение/отключение отзывов.

function add_disable_reviews_metabox() {
    add_meta_box('disable_reviews', 'Отключить отзывы', 'disable_reviews_callback', 'product', 'side', 'default');
}

function disable_reviews_callback( $post ) {
    $value = get_post_meta( $post->ID, '_disable_reviews', true );
    wp_nonce_field( 'disable_reviews_nonce', 'disable_reviews_nonce' );
    ?>
    <label>
        <input type="checkbox" name="disable_reviews" value="1" <?php checked( $value, '1' ); ?> /> Отключить отзывы для этого товара
    </label>
    <?php
}

function save_disable_reviews_meta( $post_id ) {
    if ( ! isset( $_POST['disable_reviews_nonce'] ) || ! wp_verify_nonce( $_POST['disable_reviews_nonce'], 'disable_reviews_nonce' ) ) {
        return;
    }
    if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) {
        return;
    }
    if ( isset($_POST['disable_reviews']) ) {
        update_post_meta( $post_id, '_disable_reviews', '1' );
    } else {
        delete_post_meta( $post_id, '_disable_reviews' );
    }
}

add_action( 'add_meta_boxes', 'add_disable_reviews_metabox' );
add_action( 'save_post', 'save_disable_reviews_meta' );

2. Удаление вкладки отзывов для товаров с отключёнными отзывами

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

function disable_reviews_tab_for_specific_products( $tabs ) {
    global $product;
    if ( ! $product ) {
        return $tabs;
    }
    $disable_reviews = get_post_meta( $product->get_id(), '_disable_reviews', true );
    if ( '1' === $disable_reviews && isset( $tabs['reviews'] ) ) {
        unset( $tabs['reviews'] );
    }
    return $tabs;
}
add_filter( 'woocommerce_product_tabs', 'disable_reviews_tab_for_specific_products', 98 );

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

Чтобы полностью предотвратить добавление отзывов, стоит отключить вывод формы комментариев для таких товаров.

function disable_comments_for_disabled_review_products( $open, $post_id ) {
    $disable_reviews = get_post_meta( $post_id, '_disable_reviews', true );
    if ( '1' === $disable_reviews ) {
        return false;
    }
    return $open;
}
add_filter( 'comments_open', 'disable_comments_for_disabled_review_products', 10, 2 );

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

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

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

  • Отзывы не отключаются: проверьте, что код добавлен в functions.php темы или в кастомный плагин, и активен. Очистите кэш сайта и браузера.
  • Вкладка отзывов не исчезает: убедитесь, что в шаблонах темы не переопределён фильтр woocommerce_product_tabs с приоритетом выше 98.
  • Отзывы можно оставить, хотя вкладка скрыта: проверьте фильтр comments_open, он должен вернуть false для товаров с отключёнными отзывами.
  • Потеря данных отзывов: отзывы не удаляются, они просто не отображаются и не принимаются, что безопасно.

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

  • Храните метаполе с булевым значением (например, '1' или отсутствие ключа) для минимизации нагрузки на базу.
  • Используйте wp_nonce_field и проверку nonce при сохранении метаполя для безопасности.
  • Отключайте отзывы только там, где это действительно нужно, чтобы не потерять пользовательский контент.
  • После внедрения всегда проверяйте работу на тестовом сайте, чтобы избежать ошибок на живом магазине.

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

МетодПлюсыМинусы
Использование метаполя + фильтры WooCommerceГибко, удобно для управления в админке, не требует сторонних плагиновТребует базовых знаний PHP, ручная настройка для каждого товара
Использование сторонних плагинов для управления отзывамиПростота настройки, дополнительные функции (модерация, CAPTCHA)Может нагружать сайт, не всегда есть опция для отключения отзывов по товару
Отключение отзывов глобальноПросто, быстроНельзя выборочно отключать отзывы, потеря функционала
Как создать собственный шорткод в WordPress
02.11.2025
WooCommerce: как отключить возможность повторного добавления товара в корзину
25.05.2026
WooCommerce: как автоматически изменить стоимость товара при регистрации пользователя
29.05.2026
Как удалить все виджеты на странице WordPress: практические решения и примеры кода
04.02.2026
Автоматическое создание резервных копий WordPress: лучшие практики и примеры кода
22.12.2025