selftrips
@selftrips

Можно ли вместо шорткода «фильтровать» контент?

Можно ли вместо регистрации шорткода, делать фильтр контента? Чем плохо/хорошо такое решение?

Т.е.

function my_funct($content){
    global $post;
	$out = $content;
здесь ищем  в $out [my_shortcode] и если находим, заменяем на нужный код
	return $out;
}
  • Вопрос задан
  • 23 просмотра
Пригласить эксперта
Ответы на вопрос 2
azerphoenix
@azerphoenix
Java Software Engineer
Конечно же вы можете фильтровать контент.
Приведу пример фильтрации контента, которую я использую. Нижеуказанная функция фильтрует контент (the_content) и ко всем исходящим ссылкам добавляет 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');
Ответ написан
Комментировать
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
Первое - фильтровать контент можно, регулярками. А это медленно.
Второе - шорткоды тоже работают на регулярках, внезапно.
Третье - если вы собрались фильтровать именно [my_shortcode], то в чем профит? Или я что-то упускаю?
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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