Как запретить индексирование внутренних ссылок | Часть 2

Рассмотрев в первой части способы добавления rel=”nofollow” в ссылки, образуемые стандартными виджетами WordPress, которыми в системе Q2A поделился пользователь ctapbiu, перейдем к ссылкам, создаваемым стандартными функциями. Любой шаблон напичкан функциями, выводящими ссылки на теги, категории, посты автора – вот их и будем закрывать от индексации.

Напомню – чтобы фильтры работали, их нужно поместить в файл functions.php.

Nofollow для ссылок, создаваемых функцией the_category

add_filter('the_category', 'fb_the_category');
function fb_the_category($text) {
$text = preg_replace('#rel="#', 'rel="nofollow ', $text);
return $text;
}

Nofollow для ссылок, создаваемых функцией the_tags

add_filter('the_tags', 'fb_the_tags');
function fb_the_tags($text) {
$text = preg_replace('#rel="#', 'rel="nofollow ', $text);
return $text;
}

Nofollow для ссылок, создаваемых функцией the_author_posts_link

add_filter('the_author_posts_link', 'fb_the_author_posts_link');
function fb_the_author_posts_link($text) {
$text = preg_replace('#href="#', 'rel="nofollow" href="', $text);
return $text;
}

Nofollow для ссылок, создаваемых функцией comments_popup_link

Для функции вывода ссылок на комментарии напрямую внедрить nofollow в выводимые ею ссылки не получится. Однако ничто не мешает заменить ее на аналогичную с закрытыми от индексации ссылками.

Вставьте в файл functions.php такой код:

function fb_comments_popup_link($zero = false, $one = false, $more = false, $css_class = '', $none = false) {
ob_start();
comments_popup_link($zero, $one, $more, $css_class, $none);
$text = ob_get_contents();
ob_end_clean();

$text = preg_replace('#href="#', 'rel="nofollow" href="', $text);
echo $text;
}

После этого найдите в шаблоне вызов comments_popup_link, и замените его на fb_comments_popup_link, оставив все параметры прежними. То есть, например, было comments_popup_link(‘0’, ‘1’, ‘%’), стало fb_comments_popup_link(‘0’, ‘1’, ‘%’).

Nofollow для ссылок на RSS

С RSS оказалось еще все проще – не нужно применять никакие фильтры, достаточно добавить rel=”nofollow” напрямую в код, отображающий ссылку на RSS в браузере. Обычно такой код расположен в файле header.php. Найдите в нем примерно такие строчки:

<link rel="alternate" type="application/rss+xml" title=" RSS Feed" href="" />

Добавьте в него nofollow:

<link rel="nofollow alternate" type="application/rss+xml" title=" RSS Feed" href="" />

Благодаря способам, которыми поделился пользователь ctapbiu, запросто можно сократить количество внутренних индексируемых ссылок, создаваемых виджетами и встроенными в движок функциями, на десяток, а то и больше. Не забываем говорить ему спасибо!

Напоминаю, что первая часть находится вот тут: Как запретить индексирование внутренних ссылок | Часть 1.

Автор tiaurus 2182 Articles
Являюсь создателем n-wp.ru — блога о WordPress для новичков. Мне интересно многое, поэтому еще я сделал 123-box.ru — блог о программах для Windows, и tiaurus.info — блог о красоте.

3 Комментарии

  1. Огромное спасибо за пост! Как раз нужно закрыть перетекание веса на ненужные для гугла разделы сайта.

  2. Не подскажите как избавиться от индексирования внутренних ссылок только на внутренних страницах? Допустим, на главной нужно, чтобы ссылки индексировались (рубрики сайта, страницы), а на страницах постов, и других – скрыть от индексирования? Что нужно добавить в фильтры?

  3. А с фильтрами можно добавить noindex для этих же элементов (рубрики сайта, страницы). Везде, кроме главной?

Оставить комментарий

Ваш электронный адрес не будет опубликован.


*