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

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

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

Коварные дубли wordpress — replytocom

Здравствуйте, сегодня на «Progress-project» мы с вами будим избавляться от достаточно серьёзной проблемы блога, как дубли страниц: «replytocom», wordpress создаёт данные дубли сразу после активации в админ панели древовидных комментариев:

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

И именно после этого клика создаётся дубль «replytocom». Если быть точнее то к каждому ответному комментарию wordpress автоматически присваивает персональную ссылку с приставкой «replytocom» на конце:

abrek-ad-abra.ru/kovarnye-dubli-wordpress-replytocom/replytocom=4621#respond

Отношение поисковых систем к дублям: «replytocom»

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

Google без промедления отправляет такие страницы блога в дополнительный свой «сопливый» индекс: «Supplemental Index».

Только представьте сколько на вашем блоге может быть ответов на комментарии и ровно столько же будит и дублей страниц «replytocom wordpress». А сколько ссылок вместе стем может про дублироваться на сторонние ресурсы, начиная от линков расположенных, как в самой статье так и в теле комментария, плюс ко всему исходящие ссылки в именах комментаторов. Думаю всем понятно, что к ничему хорошему это не приведёт.

Но и отказываться от использования древовидных комментариев я считаю не стоит потому, как они помогают избавиться от хаоса в комментариях, при активации данной функции комментарии будут располагаться не по порядку согласно дате их публикации а непосредственно каждый ответ под своим вопросом. К тому же вариантов борьбы с дублями страниц «replytocom» сегодня в сети просто предостаточно.

Возможные варианты борьбы с дублями replytocom

Одно время считалось, что от дублей страниц replytocom способна защитить запрещающая директива прописанная в файле robots.txt, но увы практика показывает, что подобный вариант способен спасти блог от данных дублей только в случае с Яндексом с Гуглом же данный способ не пройдёт.

Далее у нас идёт вариант с использованием какого либо спец-плагина на подобии: «WordPress Thread Comment», что на мой взгляд тоже не выход.

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

Следующий способ 301 редирект, перенаправление прописанное в файле блога под названием: «.htaccess» следующего вида:

RewriteCond %{QUERY_STRING} replytocom=
RewriteRule ^(.*)$ /$1? [R=301,L]

Способ реально работает, но опять же несёт за собой нагрузку на сервер, конечно уже и не такую большую, как плагин но всё же.

Избавляем wordpress от дублей страниц replytocom раз и навсегда

Теперь давайте я поделюсь с вами своим способом борьбы с replytocom. Вернее вариантом который используется на abrek-ad-abra.ru.

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

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

И для этого нам понадобится специальный скрипт:

var addComment = {
moveForm : function(commId, parentId, respondId, postId) {
var t = this, div, comm = t.I(commId), respond = t.I(respondId), cancel = t.I('cancel-comment-reply-link'), parent = t.I('comment_parent'), post = t.I('comment_post_ID');

if ( ! comm || ! respond || ! cancel || ! parent )
return;

t.respondId = respondId;
postId = postId || false;

if ( ! t.I('wp-temp-form-div') ) {
div = document.createElement('div');
div.id = 'wp-temp-form-div';
div.style.display = 'none';
respond.parentNode.insertBefore(div, respond);
}

comm.parentNode.insertBefore(respond, comm.nextSibling);
if ( post && postId )
post.value = postId;
parent.value = parentId;
cancel.style.display = '';

cancel.onclick = function() {
var t = addComment, temp = t.I('wp-temp-form-div'), respond = t.I(t.respondId);

if ( ! temp || ! respond )
return;

t.I('comment_parent').value = '0';
temp.parentNode.insertBefore(respond, temp);
temp.parentNode.removeChild(temp);
this.style.display = 'none';
this.onclick = null;
return false;
};

try { t.I('comment').focus(); }
catch(e) {}

return false;
},

I : function(e) {
return document.getElementById(e);
}
};

Кстати если кто то не в курсе, данный скрипт уже имеется в вашем CMS по адресу:

wp-includes/js/comment-reply.js.

И чтобы его активировать достаточно прописать в файл темы: funcions.php следующее:

function enqueue_comment_reply() {
 if( is_singular() )
 wp_enqueue_script('comment-reply');
}
add_action( 'wp_enqueue_scripts', 'enqueue_comment_reply' );

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

Отдельно подключить его к теме можно прописав в header.php до закрывающегося </head>, вот такую строку:

<?php if (is_singular() AND comments_open() AND (get_option('thread_comments') == 1)) wp_enqueue_script('comment-reply'); ?>

Но это ещё не совсем всё, так как ссылка располагающая в себе главный «корень зла» в виде replytocom всё ещё присутствует в кнопке либо ссылке ответа а значит и в исходном коде. Конечно она уже не так опасна, но всё же лучше вовсе от неё избавиться.

Чтобы напрочь убрать данную ссылку нам понадобится файл CMS: «comment-template.php», находится он в папке: «wp-includes», код отвечающий за её формирование и вывод выглядит вот так:

$link = "<a class='comment-reply-link' href='" . esc_url( add_query_arg( 'replytocom', $comment->comment_ID ) ) . "#" . $respond_id . "' onclick='return addComment.moveForm(\"$add_below-$comment->comment_ID\", \"$comment->comment_ID\", \"$respond_id\", \"$post->ID\")'>$reply_text</a>";

Из этого кода нам необходимо вырезать следующий кусок:

href='" . esc_url( add_query_arg( 'replytocom', $comment->comment_ID ) ) . "#" . $respond_id . "'

Главный недостаток здесь в том, что так, как мы вносим изменения непосредственно в файл самого CMS то после каждого его обновления всё придётся повторять заново, чтобы этого избежать открываем файл темы: «functions.php» где в самом его верху после <?php вставляем:

function progress_replycom_remove( $progress_remove ) {
$cut = "!<a(.*?)href='(.*?)'(.*?)>(.*?)</a>!si";
$insert = "<span class='comment-reply-link' \\3>\\4</span>";
return preg_replace($cut, $insert, $progress_remove);
}
add_filter( 'comment_reply_link', 'progress_replycom_remove' );

После этого функция заменит во всех ссылках расположенных в кнопке ответа: <a на <span, что в свою очередь превратит их в обычный текст.

Всё, что нам осталось это придать нашей изменившейся ссылке ответа более естественный вид, прописав в файл темы: «style.css» следующие стили для ссылки:

.comment-reply-link {
color:#5151FF; /*цвет новой ссылки*/
text-decoration:none; /*отменяем подчеркивание*/
cursor:pointer; /*курсор при наведении*/
}

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

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

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

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

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

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

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

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

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

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

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

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

© 2015-2017

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

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

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



seo-блог