Блог Максима Войтика
Публикации о способах
заработка в интернете и SEO

Избавляемся от дублей страниц Wp-json и смайлов Emoji после обновления WordPress

29 мая 2016
Комментарии: 23

Удаление WP-json и Emoji из WordPress

Всем читателям seoslim.ru привет! В прошлой статье я рассказывал каким образом можно в одни клик избавиться от ошибок в коде WordPress, дублей страниц, защитить сайт от посягательств из вне и прочих недочетов, которыми страдает бесплатная CMS.

Так что кто не хочет ковыряться в кодах и прибегать к услугам фрилансеров самое время воспользоваться плагином Clearfy, пока цены адекватные. :)

Использовать универсальный модуль — это здорово, но у большинства вебмастеров, которые ведут свои проекты ни один год, до обновления Вордпресс 4.2 и 4.4 версий не испытывали с ним проблем, так как ранее все уже было настроено, оптимизировано, а коды почищены от мусора.

Но пару месяцев назад произошло несколько кардинальных обновлений CMS, принесшие кроме плюсов и ряд значимых минусов в виде дублей страниц Wp-json и дополнительной нагрузки на сайт поддержкой смайликов Emoji.

Так что давайте разбираться с какой целью разработчиками были добавлены данные элементы в движок и самое главное научимся отключать wp-json и emoji.

Зачем ввели новый REST API в WordPress, итог


Так получилось, что после обновления Вордпресс до версии 4.4 владельцы сайтов стали замечать увеличение загруженных страниц роботами в панели Яндекс Вебмастер.

директории wp-json в панели Яндекс Вебмастер

Как видно на скрине выше структура сайта немного изменилась и появилась новая директория wp-json, а вместе с ней и поддиректории oembed, 1.0, embed.

Причиной тому явился новый интерфейс REST API под управлением, которого и работает CMS.

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

Вот только жаль, что идея не доведена до совершенства, так как никто не удосужился закрыть от поисковиков код служебных директорий.

Как итог дубли страниц wp-json стали постепенно появляться в выдаче ПС.

дубли wp-json

Что мы видим?

Введя в адресной строке браузера http://site.ru/wp-json, мы попадаем на точную копию главной страницы сайта или страницу с непонятным кодом.

пример site.ru/wp-json

Беда в том, что данная страница существует (не отдает 404 ошибку и не срабатывает редирект), поэтому велика вероятность, что роботы поисковиков ее проиндексируют.

Как убрать Wp-json, Oembed, Embed

Удаление строк этого кода из WordPress возможно с помощью внесения изменений в файл functions.php вашего шаблона.

А именно надо прописать специальные команды, которые уберут эту заразу, а при переходе на страницу http://site.ru/wp-json последняя будет отдавать 404 ошибку.

Итак находим в папке с нашей темой файл 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' );

Для того чтобы убедиться в правильности своих действий сделайте следующее:

  • Перейдите по адресу http://site.ru/wp-json — такой страницы не должно существовать (появится «Ошибка 404»).
  • Посмотрите исходный код любой страницы (нажатием клавиш «Ctrl+U») — не должно быть ссылок на https://api.w.org/ и /wp-json/oembed/1.0/.

api.w.org в исходном коде страницы сайта

Не знаю почему, но у меня на этом боге такой прием не до конца сработал, так как при переходе на http://seoslim.ru/wp-json почему то 404 ошибка не выдавалась, поэтому пришлось в файле дописать еще один код на 301 редирект.

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

Теперь остается только ждать, когда выпадут все страницы из панели Яндекса, думаю через пару апдейтов можно будет забыть о дублях.

Как убрать Emoji из WordPress (смайлы Эмодзи)


Второе нововведение в популярной CMS произошло немного раньше, чем наделавшие шумихи дубли wp-json.

С версии 4.2 WordPress поменял свои стандартные смайлики на Emoji, которые появились в Японии и прижились в социальных сетях VK, FC, OK, G+ и других.

пример смайлов Emoji

И вроде бы ничего в этом плохого нет, но не меня одного смутил тот факт, как это реализовано в Вордпресс.

1. Почему разработчики не дали право выбора владельцам сайтов включать или нет данные смайлы.

2. Скрипт и стили подгружаются прямо в секции.

код Emoji на сайте

Чтобы проверить есть ли код на вашем проекте откройте исходный код любой страницы «Ctrl+U» и сделайте поиск по слову «emoji».

3. Так как новые картинки больших размеров 72х72px то на многих площадках могло измениться отображение комментариев.

Для того чтобы отключить загрузку эмоджи достаточно внести правки в файл functions.php темы вашего сайта.

Открываем данный файл и добавляем в самый конец перед ? > следующий код:

// отключаем Emoji смайлики
remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );
remove_action( 'wp_print_styles', 'print_emoji_styles' );
remove_action( 'admin_print_styles', 'print_emoji_styles' );
remove_filter( 'the_content_feed', 'wp_staticize_emoji' );
remove_filter( 'comment_text_rss', 'wp_staticize_emoji' );
remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' );

Не забудьте сохранить все изменения и выполнить проверку все тем же поиском слова «emoji» в исходном коде.

Если его упоминаний нет, значит сделали все правильно.

Для тех, кто не любит копаться в файлах шаблона, но хочет избавиться от данных проблем есть решение в виде плагина Clearfy, после установки которого мусорный код из WordPress будет удален автоматически.

На этом все, а вы уже решили проблемы CMS после обновления на своих проектах?

(2 голос., в среднем: 5,00 из 5)
Загрузка...
С уважением, Максим Войтик
Буду рад, если нажмете на любую из кнопок:
Комментарии (23)
  1. Александр в 23:30

    Попытался убрать Wp-json на одном из своих сайтов, но после добавления кода сайт вообще перестал работать, просто чистый белый лист в браузере, и всё. Ведать это особенности моего шаблона. Дело в том что файл functions.php у меня начинается тегом . И по этому у меня всегда какие проблемы при внедрении каких то функций. [:--_)]

    Ответить
    • Алексей в 16:21

      Да с шаблонами есть такая беда, бывает ни один час приходится решать проблему.

      Ответить
  2. seoonly.ru в 06:50

    Спасибо) Победил [good]

    Ответить
  3. Александр в 09:58

    Максим, огромное вам спасибо убрал у себя на блоге эти emoj все стало чистенько!!! [good] [star] [star] [star]

    Ответить
  4. Дмитрий в 17:32

    О, наконец-то сработало. Редирект помог, без него открывалась главная и в строке оставались /wp-json/... Спасибо!

    Ответить
  5. Алекс Динго в 22:20

    Здравствуйте, Максим.

    Смайлы Emoji уже давно снес со своего блога — не люблю лишние элементы, а вот про Wp-json не знал, спасибо что рассказали, займусь этим вопросом.

    Ответить
  6. Дмитрий в 01:54

    У меня после обновления вордпресс, в загруженных роботами wp-json/ стало 245 страниц, сделал всё как описано выше, теперь при переходе на страницу powercoup.by/wp-json/oembed/1.0/embed?url=http://powercoup.by/led перекидывает на главную

    Можно узнать, это нормально? И стоит ли запрещать wp-json/ в файле robots.txt

    Ответить
    • Максим Войтик в 23:00

      Если вы брали мой код с редиректом, то вас будет перенаправлять на главную. Я так сделал потому что страница не отдавала 404 ошибку, не знаю как у вас было. В роботс ничего прописывать не надо, дубли и так выпадут, потому что страниц больше нет.

      Ответить
      • Дмитрий в 23:05

        Да, код ваш с редиректом, до этого была белая страница и куча иероглифов, теперь всё норм. Спасибо!

        Ответить
      • Амир в 22:46

        Максим, то есть при использовании вашего кода с редиректом, я должен попадать на главную страницу? Это правильно?

        Ответить
      • Максим Войтик в 23:03

        Да, должно на главную редиректить.

        Ответить
      • Амир в 00:17

        Супер! Спасибо Вам большое!

        Ответить
      • Амир в 00:56

        И еще вопрос. У меня при добавлении кода без редиректа, все эти ссылки с wp-json переводит итак на главную, но оставляет после урла кривое название этих ссылок. В этом случае также использовать редирект для отображения чистого урла или же можно оставить в грязном виде?

        Ответить
      • Максим Войтик в 12:35

        В идеале при переходе по ссылке с wp-json должна появляться 404 ошибка, что нет такой страницы.

        Ответить
      • Амир в 16:02

        Понятно, спасибо еще раз! Буду теперь разбираться почему не выходит 404 ошибка)

        Ответить
  7. Руслан в 11:59

    Привет! Эти самые джейсоны удалил уже давно также при помощи доп функции в файле functions.php, и эти дубли уже исчезли.

    А вот эмоджи я решил оставить, пусть будут :)

    Ответить
    • Максим Войтик в 22:56

      Так ты же Эмодзи Руслан все равно не используешь на блоге.

      Ответить
  8. Bogutskiy в 22:38

    Дубли это жуткая и страшная штука с которой надо бороться...

    Ответить
  9. Алексей в 02:48

    Хотел смайлы убрать, а увидел Вашу статью и редирект настроил. Спасибо!

    Ответить
    • Максим Войтик в 22:50

      Кстати Яндекс уже больше половины дублей выкинул из индекса. Сей факт не может не радовать :)

      Ответить
  10. Антон в 11:00

    Проделана такая операция по решению этой проблемы с ясоном еще в начале сентября. Уже середина октября, и было достаточное количество апдейтов, а Яндекс продолжает добавлять в поиск эти чертовы страницы.

    При переходе на них выбивается страница 404, как и нужно. И в вебмастере в списке страниц в индексе Яндекс сам пишет, что она 404. Так зачем ее добавлять?

    Ответить
  11. Илья в 15:12

    Добрый день! Благодаря вашему коду с редиректом получилось, чтобы с мусорных страниц шла переадресация на главную блога. Спасибо!

    Используя другие варианты кода только исчезали в коде статей фразы json, oembed (код на 3 строки). Еще был больший код, где была переадресация на главную, но в урл были еще мусорные ссылки.

    Как думаете, если идут редиректы с таких мусорных страниц на главную, это не плохо для поисковых систем?

    Пробовал вашим спосбом удалить код Emoji, он пропадает и вместе с ним все смайлики на блоге. Но они были не большими, в статьях около 16 px. Думал удалятся другие, большего размера, которые не используются. А удалились те которые набираются вручную (например ; ) :) )

    Ответить
    • Максим Войтик в 20:18

      В идеале, лучше чтобы вместо редиректа, мусорные страницы отдавали 404 ошибку. Про смайлики в курсе, это после последних обновлений WordPress они перестали работать.

      Ответить
Оставить свой комментарий
Обязательно ознакомьтесь с правилами комментирования!!! СПАМ будет удален!
:) :-D ;-) :-| [star] [good] [present] [flower] [:-))] [:))] [:--_)] [:-|]

© 2011-2016 seoslim.ru, блог Максима Войтика

Внимание! Копирование материала строго запрещено. Соблюдайте авторские права и уважайте труд других людей!