Нынче приглядимся пристальнее к функционалу REST API WordPress – что это наконец такое за событие(я), как работает и для чего его отключают? Дело в том, что сейчас поступает много вопросов от владельцев сайтов об этой, скажем так, фиче, а именно не совсем о ней, но о том, что у достаточно большого числа из клиентов отказывает на сайте то или оное оборудувание, функционал, особливо после обновлений самого ядра WP либо плагинов!
Давайте на примере с Solid Security Basic (прежнее имя iThemes Security) посмотрим что может случиться, если неправильно и бездумно пихать в код шаблона всякие коды!! Итак, после обновлений 9.3.1 до 9.3.2 перестает правильно отрабатывать, а именно по кнопке Сохранить настройки ничего не сохраняет!..
К примеру, ранее по подобным причинам переставал работать один из известных SEO плагинов, но об этом в следующий раз, если будет в том прок:
Если говорить лаконично – коротко: Rest api — достаточно новая инфраструктура WP (стартует от версии 4.4 и дальнейшая динамика: (по версиям Вордпресс)), коя предназначена в том числе для разработки приложений и связки cms системы с внешним миром.
Основа – JSON (JavaScript Object Notation) – простыми словами: получение, оправка и хранение информации – получать и отправлять содержимое сайта из вне в виде json..
строка в мета исходного кода выглядит так:
<link rel='https://api.w.org/' href='http://example.com/wp-json/' />
WordPress обновление: Robots API – директива max-image-preview:large (как отключить, если требуется?)
ЕСЛИ нужно: как отключить ссылку на виртуальную папку wp-json
REST API WordPress как отключить, и нужно ли
Работать с функционалом (пользоваться его прелестями) может и обычный администратор сайта, знакомый только с админкой, – собственно, для этого он предназначен. Однако, как некоторые админы считают, неведома по каким причинам, будто бы все это вредит сайту, иными словами страдает его безопасность и нервы владельца.
Так ли это!? Отчасти так… Однако, чтобы решать отключать, или не отключать, либо отключить выборочно, следует ясно представлять (понимать) те цели и обстоятельства работы REST, чтобы решать к действию!
К примеру, вот строка, причина бага с плагином Solid Security:
remove_action( 'rest_api_init', 'rest_api_default_filters', 10, 1 ); // приоритеты 10
При сохранении, выскакивает такое предупреждение: Подходящий маршрут для URL и метода запроса не найден…
как отключить REST API при помощи плагинов
отключить REST API с плагином или БЕЗ плагина вот в чем вопрос!
МетОды, как видите, достаточно широки: для подобных целей “отключения API rest” существует такие плагины как Disable REST API или Clearfy Pro и пр. – последний достаточно большущий возможностями!
Как они работают и полезны ли – не знаю, глубоко не разбирался! я ими не пользуюсь. Говорят, что немного полезны) Но мой взгляд, все подобные расширения достаточно бессмысленны!
Во-первых, вы становитесь целиком и полностью от них зависимы, а во-вторых, то же самое…
Если вы решаетесь как-то оптимизировать сайт, то, как и говорилось, нужно представлять цели, возможности и последствия!.. а в этом случае вам никакие плагины на этот счет не потребуются, ибо вы и сами и ваш сайт (ну, или сайт клиента) уже плагин, который требуется подстроить, и только
вот некоторые из доступных фильтров – деактивации
Как правило, данные сниппеты добавляются в файл functions.php
. активного шаблона (правильнее, если в дочерний шаблон /как и когда создавать дочерний шаблон/, или свой личный плагин!).
add_filter( 'rest_enabled', '__return_false' );
remove_action( 'xmlrpc_rsd_apis', 'rest_output_rsd' );
remove_action( 'wp_head', 'rest_output_link_wp_head', 10 );
remove_action( 'template_redirect', 'rest_output_link_header', 11 );
// работа с cookie
remove_action( 'auth_cookie_malformed', 'rest_cookie_collect_status' );
remove_action( 'auth_cookie_expired', 'rest_cookie_collect_status' );
remove_action( 'auth_cookie_bad_username', 'rest_cookie_collect_status' );
remove_action( 'auth_cookie_bad_hash', 'rest_cookie_collect_status' );
remove_action( 'auth_cookie_valid', 'rest_cookie_collect_status' );
remove_filter( 'rest_authentication_errors', 'rest_cookie_check_errors', 100 );
// отключаем REST API практически глобально
remove_action( 'init', 'rest_api_init' );
remove_action( 'rest_api_init', 'rest_api_default_filters', 10, 1 ); // этот как раз и причина некоторых багов на сайте с плагином Solid Security Basic (был: iThemes Security)
remove_action( 'parse_request', 'rest_api_loaded' );
// отключаем Embeds связки с REST API прием/передача данных
remove_action( 'rest_api_init', 'wp_oembed_register_route' );
remove_filter( 'rest_pre_serve_request', '_oembed_rest_pre_serve_request', 10 ); //, 4
// встраиваем скрипты
remove_action( 'wp_head', 'wp_oembed_add_discovery_links' );
remove_action( 'wp_head', 'wp_oembed_add_host_js' );
REST запросы возможно закрыть таким вариантом и, что интересно, для неавторизованных user сайта
####
add_filter( 'rest_authentication_errors', function( $result ) {
// maybe authentication error already set! = возможно, ошибка аутентификации уже установлена!
if ( empty( $result ) ){
if ( ! is_user_logged_in() )
return new WP_Error( 'rest_not_logged_in', 'You are not currently logged in.', array( 'status' => 401 ) ); // В данный момент вы не вошли в систему = статус 401
}
return $result;
});
Отключить ссылку на виртуальную папку wp-json
и иные возможности developer.wordpress можно взглянуть…
Из вышесказанного – обоснованно стало ясно, что отключать REST API не рекомендуется! Однако – не рекомендуется, это НЕ запрет!..
REST API широко отрабатывает в административной панели WordPress (настройки плагинов и пр.), а посему отключать его не только недальновидно, НО и в какой-то мере опасно !! если вы пока что неопытны в управлении сайта!
На этом слагаю свои перья и принимаюсь за следующую книгу пост по подобной теме, в котором рассмотрим подробнее по каждому коду API…
Создание… продвижение сайтов; помощь по сайту, настройки, сопровождение и пр. – студия ATs media запросто с WordPress
На этом моя повесть нынче решительно окончена...!