В 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 максимально быстрым и надежным.