По-умолчанию в CMS WordPress включен REST API, использовать который можно по ссылке:
https://имя_сайта/wp-json/
Далеко не всем нужен данный функционал, но в последних версиях разработчики все усложняют отключение REST API и не дают владельцу сайта его отключить через панель управления. В данной статье мы рассмотрим, как отключить доступ к REST API в WordPress.
Описание
REST API — предоставляет интерфейс для взаимодействия с вашим сайтом, работающим на CMS WordPress, с использованием json запросов. Умеет делать очень много вещей, но на большинстве небольших сайтов просто не используется, поэтому может быть без проблем выключен.
Отключаем WORDPRESS REST API
Способ 1 (используя плагин)
Для тех, кто боится вручную редактировать файлы темы, есть возможность установить специальный плагин, который отключает REST API.
Устанавливаете плагин, активируете его и проверяете, что доступ ограничился.
Способ 2 (без использования плагина)
К сожалению легкого способа с полным отключением REST API я не нашел (только отключение всех его фильтров и событий), но есть способ с помощью которого, можно заставить его всегда отдавать ошибку при обращении к соответствующему url адресу на вашем сайте https://имя_сайта/wp-json/
Для этого необходимо добавить следующие строчки в файл functions.php активной темы оформления:
add_filter( 'rest_authentication_errors', function( $result ) {
return new WP_Error( 'functionality disabled', 'Sorry, rest API is disabled.', array( 'status' => 401 ) );
});
После чего при обращении к wp-json будет выводиться ошибка с кодом 401:
Если же вы хотите оставить возможность доступа к REST API только авторизованным пользователям, то тогда код будет выглядеть следующем образом:
add_filter( 'rest_authentication_errors', function( $result ) {
if (!empty( $result)) {
return $result;
}
if (!is_user_logged_in()) {
return new WP_Error('rest_not_logged_in', 'You are not currently logged in.', array( 'status' => 401 ) );
}
return $result;
});