Здравствуйте, друзья. Сегодня поговорим о новых дублях страниц WP json oembed 1.0 и как их удалить. Где-то месяц назад, анализируя свой сайт в “Яндекс вебмастер”, обратил внимание на резкое увеличение количества проиндексированных статей. Сперва не придал этому особого значения и оставил на потом.
Два дня назад, при очередном анализе в вебмастере количество статей в индексе оказалось почти пятьсот шук, при реальном количестве 70 статей. Ничего себе фига, сюрприз. Причиной данной проблемы, стало очередное обновление WordPress до версии 4.4.
Что такое wp json oembed и какую опасность он несет для блога.
Разработчики внедрили новый интерфейс REST API под управлением, которого и работает wordpress CMS. При помощи данного интерфейса, в будущем, будет обеспечен доступ к нашему сайту через специальные приложения.
Разработчики смогут выполнять практически все функции управления данными и считывания данных, которые возможны в PHP, воспользовавшись новым API.
Это сделано с перспективой на развитие, таким образом разработчики будут получать доступ к данным наших сайтов через специальные приложения. Вот только они совершенно не задумались о том, что это привело к созданию дублей страниц, которые с хорошим аппетитом кушает Яндекс.
Если мы введем в адресной строке браузера http://site.ru/wp-json, то нас перекинет на непонятную XML-страницу, или на копию главной страницы сайта. И что самое страшное, что роботы данную страницу благополучно индексируют. Это может привести к проблемам ранжирования сайта, наложению санкций и фильтров от поисковиков. Поэтому, желательно срочно исправить данную проблему.
Убираем Wp-json, Oembed, Embed.
Для удаления этого вредоносного кода, необходимо внести изменения в файл functions.php вашего сайта. Таким образом вы пропишите команды, которые уберут весь мусор и при посещении страницы http://site.ru/wp-json будет отдаваться ошибка 404. Итак, переходим в свой файл functions.php через админ панель сайта или с помощью FTP доступа, и в самом конце, перед ? > вставляем следующий код.
// Отключаем сам 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' );
После установки вышеприведенного кода, сохраняете изменения и если надо чистите кэш. В дальнейшем, новые мусорные страницы перестанут появляться, а после нескольких обновлений выдачи Яндекса, уже просканированный шлак, будет удален.
Ваш сайт будет снова работоспособным и чистым. Я надеюсь, при очередных обновлениях движка, разработчики WordPress исправят эту ошибку .
Насколько вы смогли понять данная операция с кодом временная. При очередной смене шаблона сайта или обновлении движка wordpress, вам понадобится повторить все манипуляции с кодом заново. Можно дополнительно подстраховаться внесением в файл robots.txt дополнительной директивы.
Disallow: /wp-json/
Что поможет защитить от появления мусорных страниц, после обновлений темы и движка сайта. Хотя я считаю, что внесение данной директивы не совсем корректно.
Дальнейшее изучение темы борьбы с WP json oembed 1.0 привело меня к принятию решения, установить один замечательный плагин, который разом решит все вопросы с дублированным контентом и разного рода мусором. И хотя, я не являюсь сторонником установки дополнительных плагинов на свой сайт, это решение показалось мне оправданным.
А новичкам, которым сложно ковыряться с кодом и нет желания прибегать к услугам фриланса, установка специального плагина является единственно правильным решением. Но это уже тема следующей статьи. Спасибо за внимание. Всем всего доброго!
Андрей, здравствуйте. Я на своем сайте решил задачу борьбы с дублями и мусором при помощи плагина Clearfy. Вполне можно использовать и ваш вариант запретив индексацию wp-json в файле robots.txt. Удачи!
Сергей прочитал статью и бегом проверять! Сайт еще только запустил, он еще даже весь не проиндексировался! У меня сейчас Вордпресс версии 4.7.2 и он прекрасно открывает эту страницу с добавлением к адресу сайта wp-json! Получается что проблему до сих пор не решили и лучше внести изменения в файл functions.php, чтобы удалить эту гадость? И еще а если просто внести изменения в файл robots.txt (Disallow: /wp-json/) то тогда в файл functions.php изменять не надо? Спасибо вам большое!