@Albinor

Как сделать редирект ссылки?

Как сделать вот такой редирект исходящих ссылок " rel="nofollow" href=/out/?url= " ?
  • Вопрос задан
  • 208 просмотров
Пригласить эксперта
Ответы на вопрос 3
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
Во-первых, понадобится создать страницу со слагом 'out' или же кастомное правило rewrite с таким же слагом.
Во-вторых, понадобится научить WP разпознавать GET-переменную 'url'.
Во-третьих, на эту страницу или request (в случае с rewrite rule) надо повесить функционал, который будет проверять эту GET-переменную 'url', убеждаться что она безопасна и корректна, и выполнять переадресацию

Это чисто функциональная часть, обработчик самого редиректа по такой схеме.

Второй частью будет генерация правильных ссылок, с учетом атрибута. А вот тут уже надо уточнять много моментов - где ссылки будут ставиться, как и тд.

Я вам тут описал логику работы, полный ответ с примерами кусков кода выходит за рамки Тостера, это задача для фриланса. Если хотите попробовать сами решить - перечитывайте логику и начинайте работать. По мере появления более узких и конкретных вопросов - задавайте.
Ответ написан
azerphoenix
@azerphoenix
Java Software Engineer
Как я понял вам нужно добавить атрибут nofollow к внешним ссылкам. Сам использую следующий код:
Добавьте в functions.php
Перед добавлением замените md7.info на адрес ВАШЕГО сайта
// nofollow noopener noreferrer
function add_nofollow_content($content) 
{	
	$content = preg_replace_callback(
		'/<a[^>]*href=["|\']([^"|\']*)["|\'][^>]*>([^<]*)<\/a>/i',
	function($m) {
		if (strpos($m[1], "md7.info") === false)
		return '<a href="'.$m[1].'" rel="nofollow noopener noreferrer" 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');


P.S. Если вы используете ACF и хотите также фильтровать контент и добавлять nofollow, то добавьте этот код тоже:

// nofollow noopener noreferrer for ACF
function add_nofollow_acf($field) {
	$field = preg_replace_callback(
		'/<a[^>]*href=["|\']([^"|\']*)["|\'][^>]*>([^<]*)<\/a>/i',
	function($m) {
		if (strpos($m[1], "md7.info") === false)
		return '<a href="'.$m[1].'" rel="nofollow noopener noreferrer" target="_blank">'.$m[2].'</a>';
		else
		return '<a href="'.$m[1].'" target="_blank">'.$m[2].'</a>';
	},
	$field);
		return $field;
	}
add_filter('acf/load_value', 'add_nofollow_acf');
Ответ написан
@Albinor Автор вопроса
как сделать ссылку вот таким форматом href=/out/?url= " ?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы