Убираем wp-json и oembed, появившиеся из-за обновления движка WordPress

rozovye-derevya

Добрый день, уважаемые читатели! Рады приветствовать Вас на нашем Thebizfromscratch, а с вами авторы этого блога – Андрей и Даша.  Сегодня мы займёмся очень серьёзными делами, а именно рассмотрим, как убрать wp-json и oembed из новой версии WordPress.

     Или если говорить более подробно, нам нужно будет удалить:

–из шапки сайта строки кода, которые автоматически появились после обновления WordPress;

–из структуры сайта раздел wp-json, который вы можете увидеть в Яндекс Веб-мастер;

–все дубли, образовавшиеся из-за апгрейда движка.

     Не стоит пугаться и поднимать панику, если вы тоже обнаружили вышеперечисленные проблемы на своём ресурсе. На самом деле, со всем этим можно разобраться. Чтобы немного прояснить ваши головы, давайте ознакомимся, что же собой представляет вп-джейсон и для чего он вообще нужен.

     Вп-джейсон – это некая виртуальная директория, которая создана для расширения REST API. Данной разработкой пользуются всего лишь 10% пользователей. Мы относимся к остальным 90%, так что нас это мало интересует, но вот проблемы, которые возникли из-за вп-джейсон не оставили нас равнодушными.

Чем чревато игнорирование wp-json

     Появляется куча мусорных страниц, которые отрицательно отражаются на развитии блога/сайта. Появившиеся страницы связаны с картой xml, а значит, яндекс робот моментально их индексирует и в результате, в индексе возникает куча дублей. Но а дальше всё по накатанной: занижение позиций в поиске, уменьшение трафика, да + возникают ненужные исходящие ссылки.

Как проверить наличие wp-json на своём сайте

  1. Зайти в аккаунт Яндекс Веб-мастер, найти графу «Индексирование», далее «Структура сайта». Если в открывшимся окне увидите раздел «wp-json» — поздравляем! Срочно примите меры для его устранения.vp-dzheyson-v-yandeks-veb-master
  2. В поисковой строке добавьте к вашему домену/ wp-json. Если вылезет что-то подобное:chto-to-podobnoe2

 вы в числе счастливчиков! Срочно исправлять.

Решение всех проблем

     Решение придумано не лично нами, а взято из разных источников. Тестировали каждый способ и в итоге, мы нашли то, что помогло нам избавится от проблем. Итак, давайте приступим 🙂

  1. Обязательно сделать back-up!
  2. Установить связь с сервером с помощью ftp-клиент (например, File Zilla).
  3. Найти и скопировать на свой компьютер файл functions.php, который расположен: public_html/ wp-content/ themes/ папка с названием вашей темы / файл functions.php
  4. Открыть скопированный файл в Notepad++ и немного его редактировать.

Добавляем код, указанный ниже в самый конец файла ОБЯЗАТЕЛЬНО до ?>.

remove_action( 'wp_head', 'wp_oembed_add_discovery_links' );
remove_action( 'wp_head', 'rest_output_link_wp_head' );
remove_action( 'template_redirect', 'rest_output_link_header', 11, 0 );
add_filter('rest_enabled', '__return_false');
remove_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 );
remove_action( 'init', 'rest_api_init' );
remove_action( 'rest_api_init', 'rest_api_default_filters', 10, 1 );
remove_action( 'parse_request', 'rest_api_loaded' );
remove_action( 'rest_api_init', 'wp_oembed_register_route' );
remove_filter( 'rest_pre_serve_request', '_oembed_rest_pre_serve_request', 10, 4 );

На скрине видно, где расположен код у нас.kod-a

  1. Изменённый файл залить обратно.
  2. Редактировать файл Robots.txt. Вставляем строчку: Disallow: /wp-json/

Можете наглядно увидеть, как мы изменили наш Robots.txt.

     Теперь проводим проверку по 2ому способу (он указан выше). Если набор страшных строк – пропадёт и вас перебросит на главную страницу и в адресной строке останется только сайт.ру, без «/wp-json»? — проблема устранилась.

     Но, если вы такой же везунчик, как и мы и при проверке перебрасывает на главную страницу, но в адресе сайта всё-таки есть вп-джейсон  (что является дублем) – возвращаемся на доработку кода в файле functions.php.

    Для редиректа с  сайт.ру/wp-json/ на главную и редиректа всех вложенных директорий, Вам нужно будет к уже добавленному ранее коду дописать следующее:

add_action( 'template_redirect', function() {
 if ( preg_match( '#^/wp-json/(.*)#', $_SERVER['REQUEST_URI'] ) ) {
 wp_redirect( get_option( 'siteurl' ), 301 );
 die();
 }
} );

Опять же, ОБЯЗАТЕЛЬНО до ?>. Скрин для лучшего понимания прилагается.kod-o

     Делаем повторную проверку. Действия, перечисленные выше, помогли нам разобраться с тем, как убрать wp-json и oembed из новой версии WordPress. Если возникнут вопросы – обязательно напишите их в комментариях. Постараемся  помочь. Уф, сложная статейка получилась. Самое время немного расслабиться и пуститься на прогулку. Пошли мы, а Вам – удачи!

С уважением, Андрей и Даша.


Комментарии:

3 Комментарии

  1. Елена

    Статья и правда сложная на вид. Может напугать новичков обилием кодов. Но на самом деле все ясно и понятно расписано об этой проблеме.

  2. Игорь

    Ну у меня такой фигни нет, значит мне нужно радоваться

    1. admin (Автор записи)

      Странно, что Вы не видите проблему wp-json. В исходном коде Вашего блога, на 101 строке отчетливо вижу строку кода, которая автоматически появились после обновления WordPress. Так же после добавки к вашему домену/wp-json вижу неполадку. У Вас в яндекс веб-мастере не появился раздел wp-json?
      Да и версия WP 4.6.1
      Игорь, Вы как то по другому избавились от этой проблемы или …?

Оставить комментарий

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