Как запретить отображение отзывов по категории в WordPress

В WordPress стандартным механизмом для отзывов являются комментарии. Иногда возникает задача — отключить отображение и возможность оставлять отзывы (комментарии) для записей, принадлежащих определённой категории. Например, если у вас есть категория «Новости», и вы не хотите, чтобы пользователи могли оставлять отзывы к новостным публикациям.

Почему важно контролировать отзывы по категориям

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

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

Отключение комментариев по категории через код

Для решения задачи запрета отображения отзывов в определённой категории можно использовать фильтр comments_open, который отвечает за разрешение или запрет комментариев для конкретной записи.

Ниже пример функции, которая отключит комментарии для всех записей категории с ярлыком (slug) novosti:

function wpsource_disable_comments_by_category( $open, $post_id ) {
    if ( ! $open ) {
        return false;
    }
    $post = get_post( $post_id );
    if ( has_category( 'novosti', $post ) ) {
        return false;
    }
    return $open;
}
add_filter( 'comments_open', 'wpsource_disable_comments_by_category', 10, 2 );

Этот код нужно добавить в файл functions.php активной темы или в плагин для пользовательских функций. Он проверяет, принадлежит ли запись категории novosti, и если да, то возвращает false, запрещая открывать комментарии.

Как проверить slug категории

Чтобы узнать slug категории, зайдите в админке WordPress в раздел «Записи» -> «Рубрики». Там в списке категорий вы увидите ярлык (slug) рядом с названием.

Отключение вывода формы и списка комментариев

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

Для этого можно модифицировать шаблоны темы, добавив проверку категории перед выводом комментариев. Пример для файла comments.php:

if ( ! has_category( 'novosti' ) ) {
    comments_template();
}

Или внутри single.php добавить условие:

if ( comments_open() && ! has_category( 'novosti' ) ) {
    comments_template();
}

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

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

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

  • Disable Comments — позволяет отключить комментарии глобально или по типам записей, но не всегда по категориям, поэтому стоит проверить совместимость.
  • WP Comment Control — более гибкий плагин, который может ограничивать комментарии и отзывы по категориям.
  • Clearfy Pro — расширенный набор инструментов оптимизации, включая управление комментариями. В Clearfy можно настроить фильтрацию комментариев и отключение по категориям с удобным интерфейсом.

Дополнительные советы по работе с отзывами в WordPress

Чтобы полностью контролировать отзывы, полезно учитывать следующие моменты:

  • Проверьте, что в настройках WordPress (Настройки -> Обсуждение) отключены комментарии на страницах, где они не нужны.
  • Используйте фильтр wpsource_disable_comments_by_category вместе с проверками для кастомных типов записей, если они есть.
  • Для ускорения сайта отключайте загрузку скриптов и стилей, связанных с комментариями на страницах без отзывов.
  • Если на сайте много категорий с различными требованиями, рассмотрите написание расширенного плагина с настройками для админки.

Пример расширенной функции с кешированием результата

Для повышения производительности можно кэшировать результат проверки категории для каждой записи:

function wpsource_disable_comments_by_category_cached( $open, $post_id ) {
    static $cache = array();
    if ( isset( $cache[ $post_id ] ) ) {
        return $cache[ $post_id ];
    }
    if ( ! $open ) {
        $cache[ $post_id ] = false;
        return false;
    }
    $post = get_post( $post_id );
    if ( has_category( 'novosti', $post ) ) {
        $cache[ $post_id ] = false;
        return false;
    }
    $cache[ $post_id ] = $open;
    return $open;
}
add_filter( 'comments_open', 'wpsource_disable_comments_by_category_cached', 10, 2 );

Это особенно полезно на сайтах с большим числом записей и частыми проверками.

Итог

Запрет отображения отзывов по категории — частая задача для администраторов WordPress-сайтов. С помощью фильтра comments_open и проверки категории можно легко реализовать эту функциональность без плагинов или с минимальным их использованием.

Если нужно более комплексное решение с настройками в админке, рассмотрите плагины вроде Clearfy Pro. Это упростит управление и повысит безопасность сайта.

Как использовать REST API для создания кастомных эндпоинтов в WordPress
22.12.2025
Как удалить автоматические дубли страниц в WordPress
30.03.2026
Как установить и настроить Redis кеш в WordPress для ускорения сайта
07.02.2026
Как отложить загрузку скриптов в WordPress без плагинов
07.01.2026
WooCommerce: как изменить статус заказа после оплаты без плагинов
07.05.2026