Отключение комментариев в REST API WordPress: пошаговое руководство

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

Почему важно отключить комментарии в REST API WordPress

REST API используется не только для внутренних процессов WordPress, но и для сторонних приложений, мобильных клиентов, а также для AJAX-запросов на фронтенде. Если комментарии не нужны или вы хотите ограничить к ним доступ, то отключение их в REST API поможет:

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

По умолчанию WordPress предоставляет эндпоинты типа /wp-json/wp/v2/comments и комментарии в составе записи. Чтобы убрать их, надо вмешаться в работу API.

Отключение комментариев в REST API с помощью кода

Для отключения комментариев в REST API существует простой и эффективный способ — использовать фильтр rest_endpoints для удаления маршрутов комментариев. Добавьте следующий код в файл functions.php вашей темы или в кастомный плагин:

function wpabout_disable_comments_rest_api( $endpoints ) {
    if ( isset( $endpoints['/wp/v2/comments'] ) ) {
        unset( $endpoints['/wp/v2/comments'] );
    }
    if ( isset( $endpoints['/wp/v2/comments/(?P<id>\d+)'] ) ) {
        unset( $endpoints['/wp/v2/comments/(?P<id>\d+)'] );
    }
    return $endpoints;
}
add_filter( 'rest_endpoints', 'wpabout_disable_comments_rest_api' );

Этот код удалит маршруты, отвечающие за работу с комментариями через REST API. В результате попытки обращения к ним будут возвращать ошибку 404, и комментарии перестанут отображаться через API.

Отключение комментариев из метаполей записей в API

Кроме основных маршрутов комментариев, записи содержат метаполя comments и comment_status. Чтобы полностью убрать данные о комментариях из JSON-ответов записей, добавьте следующий фильтр:

function wpabout_remove_comment_data_from_post( $data, $post, $context ) {
    if ( isset( $data->data['comment_status'] ) ) {
        unset( $data->data['comment_status'] );
    }
    if ( isset( $data->data['comments'] ) ) {
        unset( $data->data['comments'] );
    }
    return $data;
}
add_filter( 'rest_prepare_post', 'wpabout_remove_comment_data_from_post', 10, 3 );

Этот код удалит поля, связанные с комментариями, из ответа API для записей постов.

Плагин для управления комментариями и их отключения в REST API

Если вы предпочитаете решения без кода, можно использовать плагины. Например, Clearfy Pro — мощный инструмент для оптимизации WordPress, который позволяет отключать комментарии полностью, включая REST API, а также другие ненужные функции.

Clearfy Pro предлагает удобный интерфейс для отключения комментариев, pingbacks, trackbacks и других элементов, которые вы не хотите видеть в вашем сайте. Это особенно полезно для тех, кто не хочет копаться в коде.

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

При отключении комментариев обратите внимание на следующие моменты:

  • Убедитесь, что комментарии отключены в настройках WordPress (Настройки → Обсуждение).
  • При использовании кастомных типов записей проверьте, что у них также отключены комментарии (параметр supports в регистрации типа записи).
  • Если комментарии уже есть, подумайте, нужно ли их удалять или просто скрыть отображение.
  • Проверьте работу REST API после внесения изменений, чтобы убедиться, что комментарии действительно недоступны.

Дополнительное отключение Heartbeat API для снижения нагрузки

Иногда комментарии связаны с частыми AJAX-запросами через Heartbeat API. Если вы отключаете комментарии, имеет смысл и ограничить Heartbeat API. Это также поможет снизить нагрузку на сервер.

function wpabout_disable_heartbeat_when_no_comments() {
    if ( ! comments_open() ) {
        wp_deregister_script( 'heartbeat' );
    }
}
add_action( 'init', 'wpabout_disable_heartbeat_when_no_comments' );

Этот фрагмент отключит Heartbeat API, если комментарии на сайте закрыты.

Выводы и что делать дальше

Отключение комментариев в REST API — важный шаг при оптимизации и защите сайта на WordPress. Используя приведённые выше методы, вы сможете гибко управлять доступностью комментариев, не затрагивая другие части системы.

Для автоматизации и удобства можно рассмотреть использование Clearfy Pro, а для разработчиков — внедрить кодовые решения в темы или плагины.

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

Как создать собственный шорткод в WordPress
01.11.2025
Как изменить JS и CSS в WordPress без использования плагинов
28.03.2026
WooCommerce: как использовать хуки для добавления пользовательских полей в форму оформления заказа
18.05.2026
WooCommerce: автоматическое изменение стоимости товара при изменении количества
26.04.2026
Как отключить Gutenberg и вернуть классический редактор в WordPress
17.02.2026