Приветствую вас на сайте Impuls-web!
Если ваш сайт работает на WordPress, то данная статья будет для вас очень полезна, так как в последних версиях данной CMS есть один небольшой недостаток, и если оставить его без внимания, то в дальнейшем это может привести к тому, что ваш сайт будет постепенно терять позиции в поисковой выдаче.
Данный недостаток связан с новым интерфейсом REST API, и заключается он в том, что на вашем сайте создается новая папка WP-JSON, в которой размещаются страницы с кодом.
На первый взгляд ничего страшного. Однако все эти страницы попадают в поисковую выдачу, и представляют собой вспомогательный код, не содержащий какого-то уникального контента. Как известно, поисковые системы как Яндекс, так и Google очень негативно относятся к подобным мусорным страницам. Причем, со временем этих страниц становится все больше и в конечном итоге, это может привести к тому, что поисковые системы начнут понижать ваш сайт в поисковой выдаче.
К счастью данная проблема решается довольно просто. Однако перед тем как перейти к ее решению, давайте сначала проверим, есть ли она на вашем сайте.
Для того, что бы понять, есть ли данная папка с ненужными страницами на вашем сайте или нет, достаточно к адресу вашего сайт через слэш приписать wp-json.
Например, так:
Если вы попадаете на страницу с непонятным кодом – это говорить о том, что на вашем сайте данная проблема есть. Именно вот такие вот страницы засоряют вашу поисковую выдачу.
Помимо этого данный компонент так же может создавать дубли страниц на вашем сайте, которые тоже очень негативно воспринимаются поисковыми системами.
Актуальное решение
- 1. Открываем файл Robots.txt, который должен находится в папке с файлами вашего сайта на хостинге. Найти и открыть его можно при помощи FTP клиента или програмы Notepad++ или аналогов, а так же через файловый менеджер на Вашем хостинге.
- 2. Убедитесь в том, что у вас в этом файле есть такая строка
1Disallow: /wp-Выглядеть это должно так:
- 3. Если такой строки нет, ножно её добавитьт. С её помощью мы задаем поисковым системам запрет на индексировнаия всех файлов, расположенных по пути: домен сайта/wp-…
Сюда будут входить файлы /wp-json/, /wp-includes, /wp-content/plugins - 4. Если вы редактировали файл прямо на хостинге, то нужно его просто сохранить. Если вы загружали этот файл с хостинга, то нужно его сохранить, а потом выгрузить обратно на хостинг с заменой существующего файла.
Устаревшее решение
Тем не менее, я все же оставлю описание устаревшего метода, так как вы можете найти его на других сайтах и должны знать что это решение в современных реалиях не подходит!
Итак, для решения данной проблемы можно воспользоваться таким алгоритмом:
- 1.Вставить небольшой фрагмент кода в файл функций вашей темы functions.php. Открыть данный файл вы можете при помощи стандартного редактора WordPress, который находится в разделе «Внешний вид» => «Редактор».
- 2.Находим здесь файл functions.php он же «Функции темы».
- 3.Далее, мы переходим в самый конец данного файла. А дальше внимание, в идеале файл functions.php должен заканчиваться вот такими символами: ? >
Если в вашем файле такие символы есть, то предложенный фрагмент кода вы будете вставлять перед этим вот символом:
Если же в вашем файле функций этих символов нет, то вы просто вставляете в самом конце файла functions.php. Специально дописывать эти символы здесь не нужно!
Перед внесением любых правок в файл функций или любой другой файл темы, не забудьте сделать его резервную копию. То есть, просто, скопируйте данный фрагмент кода куда-нибудь себе в текстовый документ, что бы он у вас сохранился в качестве резервной копии. - 4.Так же можно подключиться к сайту при помощи FTP-клиента, далее зайти в папку с доменом. Далее перейти в папку wp-content/themes/папка_с _названием_вашей_темы/ и здесь найти файл functions.php, а затем, точно так же спуститься в самый конец файла, и либо в самом конце, либо же перед символами ? > вставить данный фрагмент кода.
Код будет выглядеть следующим образом:
123456789101112131415161718192021222324// Отключаем сам REST APIadd_filter('rest_enabled', '__return_false');// Отключаем фильтры REST APIremove_action( 'xmlrpc_rsd_apis', 'rest_output_rsd' );remove_action( 'wp_head', 'rest_output_link_wp_head', 10, 0 );remove_action( 'template_redirect', 'rest_output_link_header', 11, 0 );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 APIremove_action( 'init', 'rest_api_init' );remove_action( 'rest_api_init', 'rest_api_default_filters', 10, 1 );remove_action( 'parse_request', 'rest_api_loaded' );// Отключаем Embeds связанные с REST APIremove_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' );В данном фрагменте кола мы отключаем компоненты REST API, которые приводят к данной прблеме.
Вставляя код так же, обращайте внимание на то, что бы в конце данного файла у вас не стояли лишние пробелы и Enter-ы. - 5.После вставки кода нажимаем на кнопку «Обновить файл».
- 6.Переходим на страницу сайта, обновляем ее, и теперь пробуем осуществить туже проверку, которую мы делали в самом начале. Ставим в адресной строке, после адреса сайта /wp-json.
Если вы всё сделали правильно, то вас должно перенаправить на страницу с ошибкой 404 «страница не найдена» или на главную страницу сайта. Здесь всё зависит от темы оформления.
Видеоинструкция
Как видите, это решение очень простое, но на самом деле, оно позволит уберечь ваш сайт от очень серьезных проблем в будущем. Потому, как уже есть много примеров, и среди моих знакомых в том числе, у которых сайты начали терять свои позиции именно из-за того, что у них в выдаче появлялось очень много мусорных страниц и дублей, связанных с элементом WP-JSON.
Если данная статья была для вас полезна – не забудьте написать комментарий и поделиться статьей в социальных сетях. А на этом у меня все, подписывайтесь на мою рассылку и мой канал на YouTube. До встречи в следующих статьях и видео!
С уважением Юлия Гусарь
Спасибо Юлия!
Не за что! Заходите ещё :)
Юлия
Сделал все как вы написали-перестала работать форма обратной связи Contact Form 7.
Откатил.
поставил в роботс
1. Какая версия плагина Contact Form 7 у вас стоит?
2. Вы откатывали плагин, тему или вес сайт?
Проблемы с Contact Form 7начались после последнего обновления до версии 4.8. В этой статье я рассказывала как все исправить: //impuls-web.ru/otkat-plaginov-wordpress-contact-form-7-ne-otpravlyaet-pisma/
Юлия.
Убрал из functions.php код, что вы дали выше и поставил в роботс Disallow: /wp-json/
Юлия.
И еще вопрос.
Как правильней
Disallow: /wp-json/ или без слеша
Disallow: /wp-json
Спасибо вам за ответ
Disallow: /wp-json
Версия плагина 4.8 |
Большое СПАСИБО!
Спасибо, Елена! Успехов Вам!
Спасибо, Елена!
Спасибо вам Юлия !
Здравствуйте! Что делать, если у меня возникает ошибка при попытке опубликовать новую страницу The requested URL /wp-json/wp/v2/types/post was not found on this server, причем после того, как делаю настройку постоянных ссылок. Помогите! Плииз, в WP только начинаю работать
Здравствуйте, Наталья! Если у Вас добавление этого кода вызывает такие проблемы, то лучше от него отказаться. Чтобы выяснить причину возникновения ошибки нужно более детально смотреть и анализировать Ваш сайт.
Опять я, попробовала изменить файл функций, как вы советовали, ошибка при добавлении новой страницы не уходит Ошибка публикации. Сообщение об ошибке: Ответ не является допустимым ответом JSON.
Спасибо!
Хороший сайт, без хлама и спама!
Как ни странно, при просмотре здоровья сайта выводится проблема производительности «Запрос к REST API завершился с неожиданным результатом: (404)» а далее показана главная страница. В чем ошибка? С уважением
Здравствуйте. Все получилось, стала появляться страница 404
Но после этого некоторые плагины стали ругаться. Например, плагин по отладке выдает информацию:
Сообщение ошибки: Unable to determine if the scan target is allowed: Target site returned invalid response. The REST API returned a 404 error. Please try refreshing your permalinks. Go to Settings -> Permalinks in your WordPress site. Verify that «Plain» is not selected. Then click «Save Changes»
А плагин для комментариев пишет:
Похоже, что у вас есть REST API хуки в /var/www/u0851822/data/www/shanni.ru/wp-content/themes/colormag-pro/functions.php которые могут препятствовать загрузке комментариев. Если вы не уверены как это исправить, свяжитесь с разработчиком плагина в контактах указанных во вкладке ‘Помощь’.
Это ничего страшного? Комментарии, вроде бы, подгружаются.
Если отключение вызывает проблемы в работе других плагинов, то нужно от него отказаться и вернуть все как было.
Наткнулся на ваш сайт Юля случайно,хотя почему у меня было предчувствие,что именно нужно кликнуть на вашу ссылку.И видно не подвело предчувствие.
Спасибо огромное,за полезную информацию,все сделал как и было описано,и в видео!
Еще раз огромное спасибо!Дай бог вам здоровья!
Спасибо, Алексей! Успехов Вам!
Здравствуйте Юлия!Вот вчера прочитал вашу статью,по исправлению данной ошибки Wp-Json,все проделал как описано было как показано!Но вот сегодня решил написать очередную статью,и при публикации опять вылезло сообщение,что Ошибка публикации. Ответ не является допустимым ответом JSON.
Не подскажите,что еще может припятствовать?Может сама тема?Спасибо!
Здравствуйте, Алексей! Данная статья публиковалась 4 года назад! С тех пор прошло много обновлении и WordPress и плагинов. На сегодняшний день данное решение уже не актуально и приводит к нарушениям в работе некоторых плагинов, которые используют REST API. Я подберу новое решение и опубликую в этой же статье или отдельно. Следите за обновлениями блога.
Спасибо! Юленька!
Присоединяюсь присоединяюсь ко всем благодарным на вашей страничке.
Спасибо, Александр!
Добрый день.
После внесения правок, перестала отправляться CF7, просто выдает ошибку.
Удаляем код — снова работает. Откат версии CF приводит к поломке и не рабочему состоянию половину плагинов, что на нём завязаны.
Возможно как-то решить проблему ?
Здравствуйте, Вячеслав! Данная статья публиковалась 4 года назад! С тех пор прошло много обновлении и WordPress и плагинов. На сегодняшний день данное решение уже не актуально и приводит к нарушениям в работе некоторых плагинов, которые используют REST API. Я подберу новое решение и опубликую в этой же статье или отдельно. Следите за обновлениями блога.
Классно. «Болит голова? Давайте отрежем голову!» хД
Доброго времени! Ошибка обновления. Ответ не является допустимым ответом JSON.
Сменил тему, проблема устранилась. Возвращаю тему, проблема появляется. Скорее всего на другую тему просто нужно соскочить? Так получается?
Здравствуйте, Иван! В начале статьи есть пункт «Актуальное решение». Сделайте так как там написано. Второй способ уже устарел.