Добавление rel="nofollow"
к внешней ссылке — хорошая практика SEO и сегодня мы рассмотрим пример, как можно добавить этот атрибут для всех внешних ссылок вашего сайта.
Функция позволяет использовать параметр $skip
, содержащий строку, которую нельзя найти в URL-адресе. Это позволит вам пропускать все внутренние ссылки сайта. Функция также позволяет вручную использовать атрибут rel="follow"
, т.е., если вы редактируете текст и указываете, что ссылка является rel="follow"
, функция не перезапишет ваш код.
function nofollow($html, $skip = null) {
return preg_replace_callback(
"#(<a[^>]+?)>#is", function ($mach) use ($skip) {
return (
!( $skip && strpos($mach[1], $skip) !== false) && strpos($mach[1], 'rel=') === false
) ? $mach[1] . ' rel="nofollow">' : $mach[0];
},
$html
);
}
Исходная функция взята из Stackoverflow и может использоваться в любом php-проекте. Чтобы использовать ее в WordPress, вы можете подключиться к хуку content_save_pre
, поместив этот код в свой файл functions.php. Это позволит автоматически добавлять rel="nofollow"
к внешним ссылкам в постах при сохранении:
function seo_href_nofollow( $content ) {
$qui = parse_url( "http://".$_SERVER['HTTP_HOST'] );
return nofollow( $content, $qui['host'] );
}
add_filter( 'content_save_pre' , 'seo_href_nofollow' , 10, 1);
Вы так же можете использовать эту функцию на хуке the_content
, он срабатывает при рендеринге контента и в базу атрибут nofollow сохранен не будет:
add_filter( 'the_content', 'filter_the_content_in_the_main_loop', 1 );
Кроме того, вы можете повесить функцию на хук widget_text
, чтобы добавить rel="nofollow"
в ссылки ваших html-виджетов:
add_filter( 'widget_text', 'seo_href_nofollow' );