beget banner 468x60beget banner 728x90beget banner 930x180skillbox banner 468x60skillbox banner 728x90skillbox banner 930x180flexbe banner 468x60flexbe banner 728x90flexbe banner 930x180

Как добавить rel=”nofollow” к ссылкам с помощью preg_replace() на WordPress

Добавление 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' );
smsc banner 480x320smsc banner 728x90smsc banner 120x600jivo banner 480x320jivo banner 728x90jivo banner 120x600skillbox banner 480x320skillbox banner 728x90skillbox banner 120x600

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 5 / 5. Количество оценок: 1

Оценок пока нет. Поставьте оценку первым.

Похожие посты

Как сделать webp без плагинов в WordPress

WebP — это современный формат сжатия изображений без потери качества, который напрямую влияет на скорость загрузки сайта. Конвертирование изображений из jpg и png в формат webp может дать существенный прирост в баллах по google page speed. Формат webp поддерживается большинством современных браузеров. Вы без труда можете найти плагины, которые помогут вам автоматически конвертировать изображения, добавленные…
Подробнее

Как вывести все изображения из произвольной папки без плагинов в WordPress

При разработке своих сайтов вам может понадобиться вывести галереи изображений из произвольных папок без их загрузки в библиотеку. Давайте рассмотрим пример, как это сделать с помощью шорткода: Использование: [folder-gallery path=’/data/images/’] Как видите, функция принимает путь до искомой папки (обязательно с открывающим и закрывающим слешем), в функции устанавливаются разрешенные типы изображений и формируется вывод с классами…
Подробнее

Как изменить выравнивание и размер изображения при вставке в редактор WordPress

При добавлении изображения в пост, по умолчанию WordPress вставляет его в размере medium и без выравнивания. Чтобы при загрузке картинки ей прописывалось выравнивание по центру и полный размер, вы можете использовать такой код:
Подробнее