Как убрать nofollow из записей и комментариев

В комментариях к посту Как убрать nofollow из комментариев | NoFollow Free меня спросили, а как вообще убрать атрибут nofollow из ссылок без использования плагинов? Я вспомнил ручной метод редактирования, однако поразмыслив позже, убедился, что действительно существует универсальный метод избавления от nofollow.

Ручной метод основан на редактировании файла comment-template.php, который находится в wp-includes. В этом файле нужно удалить все rel=”nofollow” и rel=”external nofollow”. Метод работает, но у него есть один существенный недостаток: после обновления WordPress вам снова придется редактировать этот файл.

Существует более универсальный способ избавиться от nofollow в блоге, не редактируя файлы движка. Он основан на использовании фильтра, который прописывается в файле functions.php. Откройте этот файл и добавьте в него такие строчки:

function comment_author_link_follow_innewwindow() {
global $comment;
$url    = get_comment_author_url();
$author = get_comment_author();
if ( empty( $url ) || 'http://' == $url )
$return = $author;
else
$return = "$author";
return $return;
}
add_filter('get_comment_author_link', 'comment_author_link_follow_innewwindow');

Этот фильтр убирает nofollow в ссылках авторов комментариев, ведущих на их сайты. А чтобы убрать nofollow в ссылках из текста комментариев и текста постов, нужно добавить такой фильтр:

function remove_nofollow($string) {
 $string = str_ireplace(' rel="nofollow"', '', $string);
 return $string;
}
add_filter('the_content', 'remove_nofollow'); // удаляем nofollow для текстов статей
add_filter('comment_text', 'remove_nofollow'); // удаляем nofollow для текстов комментариев

Если у вас используется не просто rel=”nofollow”, а rel=”external nofollow”, то нужно добавить еще один фильтр:

function remove_nofollow($string) {
 $string = str_ireplace(' rel="external nofollow"', '', $string);
 return $string;
}
add_filter('the_content', 'remove_nofollow'); // удаляем nofollow для текстов статей
add_filter('comment_text', 'remove_nofollow'); // удаляем nofollow для текстов комментариев

Это решение не зависит от обновлений, и относится только к текущей теме.

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

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

  1. Интересно конечно, только вот когда я вставил эти строки в файл темы: function.php, у меня вверху сайта появились эти строки и все! Может их нужно какими-то тегами закрыть или что?

  2. Сайт переставал работать, если я добавлял одновременно функцию “…чтобы убрать nofollow” и функцию для “…не просто rel=”nofollow”, а rel=”external nofollow”.

    Оставил только вторую и сайт заработал.

  3. Тоже озадачился вопросом удаления а rel=”external nofollow”. Воспользовался вышими скриптами и вот рез-тат:

    Первая функция прекрасно убирает nofollow.
    А вот третья никак не хочет убирать rel=”external “.

    В итоге я воспользовался только одной первой функцией, убрав rel=’external’ в строке $return = “$author“;

    всё вроде работает адекватно.

    Я в программинге не очень, поэтому буду признателен, если уважаемый автор прокомментирует такой вариант.
    Т.е. в принципе можно ли вносит такие правки?

    • А чем вам external не угодил? Оставьте этот тег в покое, не заморачивайтесь особо на его счет. Уберите nofollow – и будет вам счастье.
      Ну а по поводу правок – можно :)

  4. Можно установить плагин Dofollow и он сам автоматически уберёт теги nofollow. Я так в принципе и сделал.

    PS. Мой блог – доффолов.

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

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


*