2015-05-18 49 views
3

Я хотел бы добавить rel = "nofollow" и target = "_ blank" для всех внешних ссылок в моих сообщениях и страницах Wordpress навсегда. Я знаю, что есть плагины, которые делают то же самое, но как только они будут отключены, все изменения будут отменены, а статьи будут такими же, как с самого начала.Добавить rel = "nofollow" и target = "_ blank" для внешних ссылок постоянно

Я не знаю, как различаться между внутренними или внешними ссылками и как проверить, есть ли атрибут rel = "nofollow" или target = "_ blank".

Я думаю, что лучший способ сделать это - использовать PHP вместо MySQL. Я уже обыскал веб-страницы для руководств, учебных пособий или плагинов без успеха.

Может кто-нибудь мне помочь? Я ценю вашу поддержку.

ответ

0

Я думаю, что добавление rel"nofollow" и target="_blank" к исходящим ссылкам постоянно больше работы, чем это может быть показано здесь. Вам нужно будет перестроить функции плагинов, например External Links, так что даже ссылки в вашем wp_nav_menus можно переписать.

У меня есть предложение, которое добавляет нужные атрибуты через JavaScript при загрузке страницы. Вы можете добавить этот скрипт прямо в заголовке темы или вы можете сохранить его в отдельном файле enqueing скрипт в ваших темах functions.php:

$(document).ready(function() { 
    $("a:not(a[href^='http://www.your-domain-name.com'],a[href^='javascript'],a[href^='#'])").attr({ 
       rel: "nofollow", 
       target: "_blank" 
      }); 
}); 
1

Вы можете использовать следующий фрагмент кода: http://wpsnipp.com/index.php/functions-php/nofollow-external-links-only-the_content-and-the_excerpt/

Это отличный маленький фрагмент, который добавит rel = "nofollow" к внешним ссылкам как внутри, так и из-факта. Добавьте этот фрагмент к functions.php вашей темы wordpress, чтобы включить nofollow внешние ссылки .

add_filter('the_content', 'my_nofollow'); 
add_filter('the_excerpt', 'my_nofollow'); 
function my_nofollow($content) { 
    return preg_replace_callback('/<a[^>]+/', 'my_nofollow_callback', $content); 
} 
function my_nofollow_callback($matches) { 
    $link = $matches[0]; 
    $site_link = get_bloginfo('url'); 
    if (strpos($link, 'rel') === false) { 
     $link = preg_replace("%(href=\S(?!$site_link))%i", 'rel="nofollow" $1', $link); 
    } elseif (preg_match("%href=\S(?!$site_link)%i", $link)) { 
     $link = preg_replace('/rel=\S(?!nofollow)\S*/i', 'rel="nofollow"', $link); 
    } 
    return $link; 
} 
+0

Это похоже на работу, но я склонен кодировать все мои внутренние ссылки как ' Lee

3

Я получил решение для применения NoFollow ко всем существующим и новым внешним ссылкам. Скопируйте код в functions.php вашей темы активированной

function add_nofollow_content($content) { 
$content = preg_replace_callback('/]*href=["|\']([^"|\']*)["|\'][^>]*>([^<]*)<\/a>/i', function($m) { 
    if (strpos($m[1], "YOUR_DOMAIN_ADDRESS") === false) 
     return '<a href="'.$m[1].'" rel="nofollow" target="_blank">'.$m[2].'</a>'; 
    else 
     return '<a href="'.$m[1].'" target="_blank">'.$m[2].'</a>'; 
    }, $content); 
return $content; 
} 
add_filter('the_content', 'add_nofollow_content'); 

Вы также можете вызвать функцию home_url() вместо "YOUR_DOMAIN_ADDRESS" в отведенном избежать жесткого кодирования имени домена.

Код проверен и он работает. Надеюсь, что это поможет.

+0

Спасибо, это работает безупречно! – Forza

Смежные вопросы