WordPress: отключаем REST АПИ (wp-json)

По-умолчанию в CMS WordPress включен REST АПИ, применять который можно по ссылке:

https://имя_веб-сайта/wp-json/

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

Описание

REST АПИ — предоставляет интерфейс для сотрудничества с вашим веб-сайтом, которые работают на CMS WordPress, с внедрением json запросов. Умеет делать чрезвычайно много вещей, но на большинстве маленьких веб-сайтов просто не употребляется, потому быть может без вопросов выключен.

Отключаем WORDPRESS REST АПИ

Метод 1 (задействуя плагин)

Для тех, кто опасается вручную редактировать файлы темы, есть возможность установить особый плагин, отключающ?? REST АПИ.
Ссылка на плагин: https://wordpress.org/plugins/disable-json-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;  });

Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *