Автоматическое добавление атрибута nofollow ко всем внешним ссылкам в постах

Так вот, иногда бывает, что внешние ссылки с сайта нужно закрыть через rel=»nofollow» (зачем? — это уже тема отдельного поста), в вордпрессовских комментах атрибут проставляется автоматически, там всё ок, а вот в постах приходится прописывать его к каждой ссылке вручную, ну или скачать какой-нибудь плагин для этих целей.

Первый вариант не подходит из-за своей нудности, да и что делать в том случае, если вы не единственный автор на блоге?

Ну а плагин… Зачем использовать плагин, который можно заменить несколькими строчками кода? Вот этого кода:

function true_wp_posts_nofollow_callback($matches){
    $a = $matches[0];
    $site_url = site_url();
 
    if (strpos($a, 'rel') === false){
        $a = preg_replace("%(href=S(?!$site_url))%i", 'rel="nofollow" $1', $a);
    } elseif (preg_match("%href=S(?!$site_url)%i", $a)){
        $a = preg_replace('/rel=S(?!nofollow)S*/i', 'rel="nofollow"', $a);
    }
    return $a;
}
 
function true_wp_posts_nofollow($content) {
    return preg_replace_callback('/<a[^>]+/', 'true_wp_posts_nofollow_callback', $content);
}
 
add_filter('the_content', 'true_wp_posts_nofollow');

После вставки этого сниппета в functions.php попробуйте добавить несколько ссылок в пост и посмотреть исходный код, вот что получилось у меня:

исходящие ссылки с атрибутом nofollow в постах

Функция wp_rel_nofollow()

Если хотите закрыть через nofollow все ссылки — и внутренние, и внешние — используйте функцию wp_rel_nofollow(), вот пример кода:

function true_wp_posts_nofollow($content) {
    return stripslashes(wp_rel_nofollow($content));
}
 
add_filter('the_content', 'true_wp_posts_nofollow');

А в комментариях будет обратный процесс, там WordPress наоборот добавляет везде rel=»nofollow» по умолчанию, естественно внутренним ссылкам этот атрибут ни чему.

Источник: misha.blog

Миша Рудрастых

Путешествует по миру и рассказывает всем о WordPress лично, у себя в блогах и на курсах в Санкт-Петербурге. Умеет просто объяснять сложные вещи, делает это красиво. Организовывает неплохие WordCamp's, но совсем не умеет слушать чужие доклады.

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

%d такие блоггеры, как: