Seo-Бизнес блог Progress-project

Все о создании, продвижении сайтов и заработке в интернете

Обновлённый дизайн блога Progress-project
logotip «Progress-project»
logotip «Progress-project»

Wp json, избавляемся от очередных дублей страниц wordpress ресурса

Приветствую Вас уважаемые друзья, сегодня на «Progress-project» мы снова будим говорить о чистке и оптимизации исходного кода наших wordpress ресурсов, а если точнее то, как избавиться от wp json, создающего целую кучу дублирующих виртуальных страниц и заодно, попутно уберём и ещё один довольно бесполезный код иконки версии нашего cms.

Что такое wp json и какую опасность он представляет для блога

На самом деле проблемы с wp json в wordpress появились уже довольно давно, ещё в 4.4 версии разработчиками был введён совершенно новый «API REST», который в свою очередь и наделал целую кучу виртуальных дублей страниц, но заметно это стало относительно совсем недавно, а именно после очередного обновления поисковой базы или в простонароде АПа… Яндекса.

Чтобы проверить имеются ли дубли wp json на вашем сайте, переходим в Яндекс веб-мастер, выбераем необходимый сайт и кликаем по ссылке «Загружено роботом»:

Далее, если же дубли wp json у Вас имеются, Вы увидите примерно следующую картину:

Конечно у Вас здесь могут присутствовать и совершенно иные дубли, всё зависит от того какие именно меры Вы уже предприняли для их удаления, в дальнейшем мы обязательно рассмотрим различные варианты избавления от самых распространённых дублей страниц wordpress, обязательно подпишитесь на обновления, чтобы нечего не пропустить. А пока давайте вернёмся именно к wp json.

Ссылку на так называемую виртуальную директорию — wp json, Вы можете видеть в заголовке исходного кода вашего wordpress ресурса, набрав «Ctrl + U»:

Если скопировать данную ссылку и вставить в адресную строку браузера, у нас откроется та же страница, что и была открыта изначально, но уже с некой дополнительной приставкой /wp-json/ на конце, то есть мы имеем на своём сайте или блоге две совершенно одинаковых страницы или записи, но по разным url, как вы сами понимаете это очень плохо. Тем более с учётом всей сложности вложенности наших виртуальных страниц wp-json и от этого непременно нужно избавляться, как можно быстрее, чем мы сейчас и займёмся.

Как убрать или отключить wp json создающий виртуальные дубли страничек

Чтобы раз и навсегда на своём сайте решить проблему с wp json можно прибегнуть к одному из трёх известных мне на сегодняшний день способов. Из которых самый эффективный, это установить в файл темы: functions.php вот такой код:

/***Избавляемся от wp json***/
// Отключаем сам 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' );

Всё этого будет вполне достаточно, чтобы, как я уже сказал раз и навсегда отключить wp json.

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

Остальные же способы удаления wp json, подразумевают полную вырезку всех фильтров REST API и отключения самого API в файле Вашего cms:

https://abrek-ad-abra.ru/wp-includes/default-filters.php

Как вы понимаете данная мера временная и с очередным новым обновлением wordpress всю операцию необходимо будет произвести заново.

Либо установкой специального плагина, что на мой взгляд не совсем оправданно, при существовании кодового аналога.

Всё, как убрать wp json мы с Вами разобрались. Теперь, как я и обещал в самом начале статьи, давайте попутно избавимся ещё от одного кода а вернее скрипта нашего ресурса, на иконки версии wordpress, чтобы нам больше не возвращаться к этой теме.

Убираем из исходного кода, скрипт иконки версии wordpress

Конечно данный скрипт не создаёт какой либо угрозы, но и является на мой взгляд весьма бесполезным и только занимает место.

Выглядит же он примерно так:

<script type="text/javascript">
 window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/72x72\/","ext":".png","source":{"concatemoji":"http:\/\/abrek-ad-abra.ru\/wp-includes\/js\/wp-emoji-release.min.js"}};
 !function(a,b,c){function d(a){var c,d,e,f=b.createElement("canvas"),g=f.getContext&&f.getContext("2d"),h=String.fromCharCode;if(!g||!g.fillText)return!1;switch(g.textBaseline="top",g.font="600 32px Arial",a){case"flag":return g.fillText(h(55356,56806,55356,56826),0,0),f.toDataURL().length>3e3;case"diversity":return g.fillText(h(55356,57221),0,0),c=g.getImageData(16,16,1,1).data,d=c[0]+","+c[1]+","+c[2]+","+c[3],g.fillText(h(55356,57221,55356,57343),0,0),c=g.getImageData(16,16,1,1).data,e=c[0]+","+c[1]+","+c[2]+","+c[3],d!==e;case"simple":return g.fillText(h(55357,56835),0,0),0!==g.getImageData(16,16,1,1).data[0];case"unicode8":return g.fillText(h(55356,57135),0,0),0!==g.getImageData(16,16,1,1).data[0]}return!1}function e(a){var c=b.createElement("script");c.src=a,c.type="text/javascript",b.getElementsByTagName("head")[0].appendChild(c)}var f,g,h,i;for(i=Array("simple","flag","unicode8","diversity"),c.supports={everything:!0,everythingExceptFlag:!0},h=0;h<i.length;h++)c.supports[i[h]]=d(i[h]),c.supports.everything=c.supports.everything&&c.supports[i[h]],"flag"!==i[h]&&(c.supports.everythingExceptFlag=c.supports.everythingExceptFlag&&c.supports[i[h]]);c.supports.everythingExceptFlag=c.supports.everythingExceptFlag&&!c.supports.flag,c.DOMReady=!1,c.readyCallback=function(){c.DOMReady=!0},c.supports.everything||(g=function(){c.readyCallback()},b.addEventListener?(b.addEventListener("DOMContentLoaded",g,!1),a.addEventListener("load",g,!1)):(a.attachEvent("onload",g),b.attachEvent("onreadystatechange",function(){"complete"===b.readyState&&c.readyCallback()})),f=c.source||{},f.concatemoji?e(f.concatemoji):f.wpemoji&&f.twemoji&&(e(f.twemoji),e(f.wpemoji)))}(window,document,window._wpemojiSettings);
 </script>

Так же набираем на клавиатуре «Ctrl + U» и смотрим код, если подобное присутствует скрываем его вывод. Для этого снова открываем файл темы functions.php и ниже уже вставленного сегодня кода добавляем следующее:

/***Убираем код иконки версии***/
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' );

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

На этом на сегодня у меня всё, желаю Вам всего доброго, до новых встреч!

С уважением, автор блога!
© progress-project
★Обновлено:2016-07-12

Введите свой e-mail:

Вы можете поделиться статьёй в социальных сетях:

Комментарии к статье

1 комментарийна “Wp json, избавляемся от очередных дублей страниц wordpress ресурса”
  1. seoonly.ru:

    Спасибо, будем внедрять-)

    Ответить

Ваш комментарий

Внимание! Перед тем, как вставить в комментарий: html, php либо JavaScript, преобразуйте его в HTML сущность!

» Подписаться на комментарии по RSS
Поиск по блогу

Введите свой e-mail:

ВКонтакте Google+ Facebook RSS-лента сайта abrek-ad-abra.ru

Топ комментаторов

Виктор(6)
seoonly.ru(4)
Иван(3)
Олег(3)
Николай(3)

© 2015-2017

SEO-Бизнес блог «Progress-project».

Все материалы, опубликованные на сайте: принадлежат автору и охраняются в соответствии с законодательством РФ.

При использовании материалов сайта гиперссылка на обязательна!



seo-блог