Убираем wp-json и oembed

Как убрать wp-json и oembed из новой версии WordPress.

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

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

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

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

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

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

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

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

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

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

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

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

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

  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 );

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

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

Теперь проводим проверку по 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();
 }
} );

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

Делаем повторную проверку. Действия, перечисленные выше, помогли нам разобраться с тем, как убрать wp-json и oembed из новой версии WordPress. Если возникнут вопросы – обязательно напишите их в комментариях на thebizfromscratch.ru/dlya-vebmastera/kak-ubrat-wp-json-i-oembed-iz-novoi-versii-wordpress.html