Разработчики WordPress ввели новый API REST, как говорится для того, чтобы как то получать данные из сайта в виде json. Зачем, почему и как, никому не интересно, но вот результат сия нововведения, огорчил очень много владельцев блогов.
Теперь WordPress создает очень много техстраниц, которые попадают в индекс Яндекса, а это очень плохо. Как увидеть эти страницы? Очень просто, добавьте к адресу сайта - /wp-json, чтобы получилось что-то вроде - site.com/wp-json.
Если перед вами откроется страница с содержимым типа:
{"name":"\u0410\u0432\u0442\u043e\u0440\u0441\u043a\u0438\u0439 \ и так далее
Поздравляю, у Вас та же комедия. Также если открыть исходный код страницы Вашего сайта в браузере, то в шапке будет обнаружена такая строка
<link rel='https://api.w.org/' href='http://ВАШ САЙТ.com/wp-json/' />
Еще одно место, а оно главное, это панель вебмастера в Яндексе. Если Вы там зарегистрировали свой сайт то перейдите во вкладку Индексирование сайта - Структура сайта и увидите там вот такую картину.
Как видите это у меня и там - 484 страницы, изначально было 670, количество уменьшается после добавления кода, о котором я напишу ниже. Как видите это количество у меня только в Загруженных, в Индекс не попала ни одна, возможно из за правильно составленного robots.txt. Все же мусор всеравно генерировался.
Что бы отключить wp-json на своем блоге WordPress, Вам понадобится код, который был найден на сайте wp-kama.ru.
Вам нужно открыть файл пользовательских функций - functions.php и в его конец перед закрывающим тегом ?>, если нет, то просто в конец, нужно добавить такой вот код:
// Отключаем сам REST API add_filter('rest_enabled', '__return_false'); // Отключаем фильтры REST API 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 ); // Отключаем события REST API remove_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 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' );
Если Вам пригодился данный код и помог решить ту же проблему что и многим вебмастерам, расскажите об этой статье другим, чтобы помочь как можно скорее избавится от лишних страниц в индексе Яндекса.
Чтобы вновь не развести такой мусор на своем сайте, перед обновлением блога до новой версии, нужно посмотреть в поиске не обнаружили ли люди в обновлениях дыр. Если же все-таки система обновилась и какая-то проблема всплыла, решать ее нужно быстро, чтобы не пришлось потом решать еще больше проблем.
На этом все, спасибо за внимание. 🙂