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

👍 Научим создавать сайты на WordPress бесплатно за 19 уроков. Подробнее →

Рассмотрев в первой части способы добавления 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.

Создай свой первый сайт на WordPress

tiaurus

Автор n-wp.ru — блога о WordPress для новичков.

Оцените автора
Добавить комментарий

  1. brus

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

    Ответить
  2. playadog

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

    Ответить
  3. playadog

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

    Ответить