Как полностью закрыть от индексации ссылки в комментариях
Официально Яндекс больше не учитывает noindex и обращает внимание только на rel="nofollow" http://help.yandex.ru/webmaster/?id=1111291, но возможно еще что-то поменяется, поэтому привожу инструкцию, и как закрыть ссылки в комментариях от индексации с помощью noindex, и как поставить для них атрибут nofollow.
По-умолчанию WordPress добавляет атрибут rel="nofollow" для ссылки в имени автора комментария, но если ссылка была добавлена в тело самого комментария без использования html-тегов, замечено, что WordPress не будет добавлять для таких ссылок rel="nofollow" (хотя ссылка автоматически вставится).
Чтобы закрыть такие ссылки в noindex/nofollow качаем плагин WP-Noindex.
Открываем его, находим там 12-ю строку:
return str_replace('<a ', '<noindex><a ', $comment);
и добавляем rel="nofollow", в итоге получится такой код:
return str_replace('<a ', '<noindex><a rel="nofollow" ', $comment);
Как видим, сам по себе плагин заключает ссылку только в noindex, указанная правка позволяет также добавлять атрибут rel="nofollow".
Можем полностью переписать этот плагин для использования только rel="nofollow" (исправила название и описание плагина в примере, чтобы не путать).
<?php
/*
Plugin Name: WP-Nofollow
Plugin URI: http://www.wordpressplugins.ru/seo/wp-noindex.html
Description: Добавляет в ссылки атрибут rel="nofollow", что запрещяет их индексацию Яндексом и Google.
Author: Flector
Author URI: http://www.wordpressplugins.ru
Version: 1.00
*/
function wp_nofollow($comment) {
return str_replace('<a ', '<a rel="nofollow" ', $comment);
}
function wp_nofollow2($comment) {
return str_replace('</a>', '</a>', $comment);
}
add_filter('comment_text', 'wp_nofollow');
add_filter('comment_text', 'wp_nofollow2');
?>
Для заключения в noindex ссылки в имени автора, находим в файле comments.php (или в functions.php) строку вида:
<?php printf(__('<cite class="fn">%s</cite> <span class="says">пишет:</span>'), get_comment_author_link()) ?>
или содержащую:
<?php comment_author_link() ?>
и заменяем на:
<?php printf(__('<cite class="fn"><noindex>%s</noindex></cite> <span class="says">пишет:</span>'), get_comment_author_link()) ?>
или:
<noindex><?php comment_author_link() ?></noindex>
Если совсем нужно убрать ссылку на автора, можем заменить comment_author_link на comment_author.
Существует также плагин WP No External Links. Он позволяет закрывать от индексации не только ссылки в комментариях, но и все ссылки в записях, или делать переадресацию для них. Однако он работает только у части пользователей 3.0+, у других, и у меня в том числе, он не сохраняет настройки, поэтому закрыть ссылки выборочно в комментариях или записях не получится, только везде сразу.