wp_rel_nofollow()WP 1.5.0

Добавляет rel="nofollow" ко всем элементам <a> в переданном тексте. Внутренние ссылки пропускаются.

Если ссылка внутренняя (ведет на страницу текущего сайта), то атрибут nofollow добавлен не будет.

Смотрите также:

Хуков нет.

Возвращает

Строку. Отформатированный контент.

Использование

wp_rel_nofollow( $text );
$text(строка) (обязательный)
Контент, который может содержать HTML теги А.

Примеры

0

#1 Пример добавления ко всем ссылкам в тексте атрибута rel="nofollow"

$text = 'Человеку нужен смех, как цветку солнечный свет. 
Если бы случилось так, что смех вымер, человечество превратилось 
бы в зоосад или общество ангелов - стало скучным, 
угрюмым и застыло в величественном равнодушии. 
Читайте роман Джеймся Крюса: 
<a href="http://flibusta.net/b/162259">Проданный смех</a>.';

$text = wp_rel_nofollow( $text );

echo $text;

// Получи ссылку:
// <a href="http://flibusta.net/b/162259" rel="nofollow">Проданный смех</a>.
0

#2 Добавим всем внешним ссылкам в контенте атрибут nofollow

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

#3 Улучшим обработку внешних ссылок.

Закроем внешние ссылки в контенте от индексации и добавим target="_blank".

add_filter( 'the_content', 'external_links_sanitizer' );

function external_links_sanitizer( $content ){

	$content = wp_unslash( wp_rel_nofollow( $content ) );
	$content = str_replace( 'rel="nofollow"', 'target="_blank" rel="nofollow noindex noopener"', $content );

	return $content;
}

Список изменений

С версии 1.5.0 Введена.

Код wp_rel_nofollow() WP 6.1.1

function wp_rel_nofollow( $text ) {
	// This is a pre-save filter, so text is already escaped.
	$text = stripslashes( $text );
	$text = preg_replace_callback(
		'|<a (.+?)>|i',
		static function( $matches ) {
			return wp_rel_callback( $matches, 'nofollow' );
		},
		$text
	);
	return wp_slash( $text );
}