Как отключить REST API в WordPress без плагинов

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

Что такое REST API и зачем его отключать

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

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

Отключение REST API особенно актуально для закрытых сайтов, одностраничников или проектов, где API не используется.

Как полностью отключить REST API через functions.php

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

function wprus_disable_rest_api() {
    if (!is_user_logged_in()) { // Отключаем для неавторизованных пользователей
        wp_die('REST API отключен на этом сайте.', '', array('response' => 403));
    }
}
add_action('rest_api_init', 'wprus_disable_rest_api', 0);

Этот код полностью блокирует доступ к REST API для всех неавторизованных пользователей, оставляя доступ для админов и авторизованных пользователей. Если хотите отключить API для всех, уберите условие if (!is_user_logged_in()).

Дополнительная фильтрация эндпоинтов REST API

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

function wprus_filter_rest_endpoints($endpoints) {
    // Удаляем эндпоинт, который возвращает данные пользователей
    if (isset($endpoints['/wp/v2/users'])) {
        unset($endpoints['/wp/v2/users']);
    }
    // Можно удалить другие эндпоинты по необходимости
    return $endpoints;
}
add_filter('rest_endpoints', 'wprus_filter_rest_endpoints');

Такой подход позволяет закрыть только те части API, которые считаются уязвимыми или не нужными.

Как проверить, что REST API действительно отключен

Для проверки работы REST API можно выполнить простой запрос к сайту:

  • Откройте браузер и перейдите по адресу https://ваш-сайт.ru/wp-json/.
  • Если REST API отключен, вы увидите сообщение об ошибке 403 или другую ошибку, которую вы задали в коде.
  • Если API работает, вы увидите JSON с информацией о маршрутах.

Также можно использовать инструменты командной строки, например curl:

curl -i https://ваш-сайт.ru/wp-json/

Нюансы и рекомендации при отключении REST API

Перед тем как отключать REST API, учтите следующие моменты:

  • Некоторые плагины и темы зависят от REST API, например редактор Gutenberg, некоторые конструкторы страниц, мобильные приложения.
  • Отключение REST API может повлиять на работоспособность админ-панели и сторонних сервисов.
  • Рекомендуется тестировать все функции сайта после внесения изменений.

Если вы используете плагины из коллекции WPGPT или Clearfy Pro от WPSHOP.RU, там есть опции для управления REST API с удобным интерфейсом, что может быть полезно для тех, кто не хочет писать код.

Пример: частичное ограничение доступа к REST API для гостей

Иногда нужно не отключать API полностью, а только ограничить доступ к определённым данным. Например, запретить доступ к данным пользователей, но разрешить общие запросы:

function wprus_restrict_rest_api_access($access) {
    if (!is_user_logged_in()) {
        $current_route = rest_get_route();
        // Запрет доступа к эндпоинтам пользователей для гостей
        if (strpos($current_route, '/wp/v2/users') === 0) {
            return new WP_Error('rest_forbidden', 'Доступ запрещён.', array('status' => 403));
        }
    }
    return $access;
}
add_filter('rest_authentication_errors', 'wprus_restrict_rest_api_access');

Этот код проверяет текущий маршрут и если запрос идёт к пользователям, и пользователь не авторизован — возвращает ошибку доступа.

Заключение

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

Управление авторизацией в WordPress по ролям и устройствам: практические решения
08.04.2026
WooCommerce: автоматическое удаление старых неоплаченных заказов
15.05.2026
Как добавить защиту от Brute Force атак в WordPress без плагинов
18.02.2026
WooCommerce: автоматическое удаление неоплаченных заказов с подробной настройкой
25.05.2026
Как автоматизировать обновление плагинов в WordPress с помощью кода
23.12.2025
×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше