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

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

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

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

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

Сначала определите slug ролей, например:

  • administrator
  • shop_manager
  • customer

В нашем примере отключим отзывы для администраторов и менеджеров магазина.

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

В файле functions.php вашей дочерней темы или в кастомном плагине добавьте следующий код:

add_filter('woocommerce_product_review_comment_form_args', 'disable_reviews_for_roles');

function disable_reviews_for_roles($args) {
    if (is_user_logged_in()) {
        $user = wp_get_current_user();
        $blocked_roles = ['administrator', 'shop_manager'];
        foreach ($blocked_roles as $role) {
            if (in_array($role, (array) $user->roles)) {
                $args['comment_field'] = '<p>Отзывы для вашей роли отключены.</p>';
                $args['comment_notes_after'] = '';
                $args['title_reply'] = '';
                return $args;
            }
        }
    }
    return $args;
}

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

Чтобы дополнительно убрать форму полностью, можно сделать так:

add_filter('comments_open', 'disable_comments_for_roles', 20, 2);

function disable_comments_for_roles($open, $post_id) {
    if (is_user_logged_in() && get_post_type($post_id) === 'product') {
        $user = wp_get_current_user();
        $blocked_roles = ['administrator', 'shop_manager'];
        foreach ($blocked_roles as $role) {
            if (in_array($role, (array) $user->roles)) {
                return false;
            }
        }
    }
    return $open;
}

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

  • Войдите под пользователем с ролью administrator или shop_manager.
  • Перейдите на страницу любого товара с включёнными отзывами.
  • Убедитесь, что форма для добавления отзыва либо заменена сообщением, либо отсутствует.
  • Попробуйте оставить отзыв — это должно быть невозможно.
  • Для других ролей форма должна отображаться как обычно.

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

  • Код не сработал: Проверьте, что код добавлен в активную тему или плагин, и нет конфликтов с другими плагинами, изменяющими отзывы.
  • Отзывы всё ещё можно оставлять: Возможно, другой плагин или тема игнорируют фильтр comments_open. Проверьте консоль и логи ошибок.
  • Пользователь не входит в нужную роль: Убедитесь, что роль пользователя прописана правильно, и нет опечаток.
  • Сообщение не отображается: В коде функции disable_reviews_for_roles проверьте HTML-разметку в строке comment_field.

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

  • Используйте кастомные функции в дочерней теме или собственном плагине, чтобы обновления не затёрли изменения.
  • Не отключайте отзывы для всех пользователей, если на сайте важен социальный доказательный эффект.
  • Проверяйте роли пользователей через стандартный объект WP_User, это безопаснее, чем хранить роли в пользовательских полях.
  • Кешируйте результат проверки роли, если у вас много посетителей с разными правами, чтобы снизить нагрузку.

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

МетодПлюсыМинусы
Код в functions.phpПростота, нет зависимостейТребует навыков программирования
Плагины для управления ролямиУдобный интерфейс, расширенные настройкиДополнительные ресурсы, возможные конфликты
Отключение через шаблоны темыГибкость кастомизацииСложность поддержки, зависит от темы
Как удалить загруженные файлы из медиатеки WordPress по ссылке
01.10.2026
WooCommerce: как запретить отмену заказа по ролям пользователей
27.09.2026
Автоматическое обновление статуса заказа WooCommerce по оплате через код
29.09.2026
Как создать и использовать кастомные таблицы в WordPress
01.10.2026
WooCommerce: автоматическое удаление неоплаченных заказов с подробной настройкой
23.09.2026

Расскажем где можно скачать WordPress с официального сайта на русском языке, где скачать и купить премиум плагины и темы на русском.