Как полностью отключить REST API введенный в WP 4.4?
В WordPress 4.4. ввели новый API REST.
Толком не знаю зачем он нужен. Вроде для того, чтобы можно было получать содержимое сайта из вне в виде json.
В общем, вопрос такой.
Как его отключить? Желательно чтобы он вообще не работал. А конкретно, нужно удалить из <head>
html сайта эту строку:
<link rel='https://api.w.org/' href='http://example.com/wp-json/' />
Нужно удалить все фильтры REST API и отключить сам API. Для этого поместите следующий код в файл functions.php:
Фильтры хранятся в этом файле: http://wp-kama.ru/filecode/wp-includes/default-filters.php#L211
П.С. Еще есть плагин для отключения REST API: https://wordpress.org/plugins/disable-wp-rest-api/
А также, есть плагин по этой же теме, который отключает возможность встраивать ваши записи на другом блоге - oembed. Называется Disable Embeds. Некоторые строки из отключения oembed используются в коде выше, потому что они косвенно связаны с REST API.
Отключать REST API не рекомендуется!
REST API используется в админке WordPress, поэтому отключать его опасно!
Но можно закрыть все REST запросы (даже публичные) для неавторизованных пользователей:
Подробнее про отключение REST от публичного доступа.
Вот спасибо, помогли. Только я не понял, почему это появилось у меня только на одном сайте, на остальных такого нет, версия вордпресс одна?
Написал тоже об этом статью, но кроме этого кода нужно вставить еще несколько строк, чтобы удалились ссылки на эти разделы http://zmoe.ru/wp-json/.
Про какие несколько строк идет речь?
Про эту строку?
Похоже её тоже нужно включить в этот список. У себя на сайте я её отключил сразу, но почему-то я думал что она не связана с rest api, сейчас посмотрел - связана...
И есть еще такой скрипт, но это чтобы сайт мог отображать выводимые через rest блоки с других сайтов. В принципе и его можно отключить...
Спасибо за коммент, дополнил код, еще одной строкой. Ну WP конечно дал... Галку в настройках поставили бы хоть что ли для отключения REST API.
Для редиректа с
http://example.com/wp-json/
на главную, добавьте:Спасибо автору сайта, спасибо также zmoe со странным сайтом, где не видно комментариев, а вместо них предлагают поиграть в игру в браузере.
Спасибо блогеру "Kama". Можно ещё поинтересоваться за следующее... на главной так и остался непонятный скрипт, где встречается этот самый json
также интересует этот вопрос
Это никак не связано с REST API! Тут у вас показано что тип данных в json формате... Как если писать
Коллеги, так у кого получилось убрать этого зверя (ld+json) из скрипта плагина Yoast SEO? Поделитесь опытом, а то в вебмастере дубли продолжают плодиться.
Более полная версия редиректа, перенаправляет еще и все вложенные директории, мне кажется имеет смысл добавить в основную тему.
Проверил на новом WP 5.1 вышеприведённый код редиректа wp-json на главную. Не работает.
Плагин disable-json-api не работает — не удаляет строки. Ваши инструкции сработали
Подскажите пожалуйста. Вставил указанный код но редиректа с этих страниц не идет, а попадает на 404 ошибку (страница не найдена). В чем может быть дело?
Зачем вам нужен редирект? Кто на эти страницы заходит?..
Я подумал сто одним из критериев правильной работы решения указанного выше является редирек. Если нет, то редирект не нужен.
Тогда еще один вопрос. В вебмастере>"структура сайта" теперь имеется раздел wp-json/. Я так понимаю он должен пропасть после очередного посещения роботом?
Да, конечно пропадет, 404 же отдается...
Вставил код, но 404 не отдает. На месте того контента что выдавали эти страницы стал выводиться контент с главной, но ответ сервера 200, т.е. не 404 и не 301. Подскажите, как можно сделать чтобы на месте этих страниц выдавалась 404 ошибка?
Та же история.
Kama, подскажите куда копать?
Страницы с бредокодом исчезла, но открывается
http://site.com/?url=http%3A%2F%2Fsite.com%2Fcategory%2nazvanie-staty%2F&format=xml , а на ней дублируется главная страница. Ответ сервера 200ok.
Подскажите как должно быть?
1.Без добавления кода вебмастер говорит, что загружено 18 страниц wp-json/ но их нет в индексе, страницы находятся в разделе исключенные. При переходе на эти страницы выдает код.
2.При добавлении указаного в статье кода. Страница направляет на главную, но в адресной строке остается путь к домен/wp-json/
У меня такая же проблема. Вы как-то её решили?
Ребята помогите мне устранить это проблема у меня никак не получается. За ране спасибо
Виктор, этим способом вы боритесь с последствиями, а не с причиной.
А куда лайк то поставить, за ценные советы?
То же самое. Не редиректит на главнуа, а отображает контент главной. Получается, что создаются дубли главной страницы.
При добавлении указаного в статье кода. Страница направляет на главную, но в адресной строке остается путь к домен/wp-json/
То же самое, кто нибудь нашел выход?
Я создал папку /wp-json Закинул туда .htaccess файл с содержимым
Deny from all
и вроде норм
умничка. просто элегантно обойти виртуальный урл подсунув реальный файл
Kama, здравствуйте! У меня стоит последняя версия WP 5.7.2. И использую в functions.php команды из вышеприведенной инструкции:
Но в таком случае не работает плагин "All in One SEO" (свежая версия), которому нужен REST API. Он будет работать, если убрать строчки кода, отвечающие за:
Вопрос: Насколько сейчас актуальны вот эти команды - отключение REST API фильтров/событий/Embeds/oembed scripts ? Или достаточно оставить команду - Закрытие всех REST запросов для неавторизованных пользователей?
Embeds и скрипты вообще не обязательно отключать!
Здравствуйте. Можете помочь советом?
У меня на сайте WP включен JSON REST API. И вот последнее время появилась такая проблема. При работе в редакторе WP процессор хостинга загружается на 100%. В отчете нагрузки куча запросов GET типа /сайт/wp-json/wp/v2/media/15317?context=edit&_locale=user, где цифра как я понял - это номер картинки, которая в статье. если в статье много картинок, то вот и запросов много, и каждый запрос висит по 30-40 секунд.
Не смог поиском найти от чего это может быть и почему формируется такой запрос. И главное - как это исправить? Буду очень благодарен за совет!