wp_kses()

Большинство названий функций в Кодексе WordPress уже сразу дают нам подсказку о том, какое назначение у функции. В слове kses можно увидеть слова XSS и access (что логично – она позволяет защититься от XSS-атак), кроме того это акроним kses strip evil scripts. Больше про очистку данных читайте в этом уроке.

Функция позволяет убедиться в том, что в переданной в ней строке присутствуют только разрешённые теги HTML и разрешённые для них атрибуты и их значения, и разрешённые протоколы у ссылок. Всё, что не разрешено, будет удалено.

wp_kses( $string, $allowed_html, $allowed_protocols = array() )

Параметры

$string
(строка) Строка, которую планируем очищать.
$allowed_html
(массив|строка) Список разрешённых HTML-тегов и значений атрибутов. Кроме того, в этот параметр можно передать название шаблона обработки в виде строк, например:
  • strip – все HTML-теги будут удалены, функция превратится в аналог PHP-функция strip_tags(),
  • data – в этом случае только блочные HTML-теги будут удалены, кроме тега <blockquote>,
  • post – разрешает все теги и атрибуты, которые разрешены для контента постов в WordPress, обычно они содержатся в глобальной переменной $allowedposttag. У меня уже был урок, о том, как изменить эти значения,
  • default – все теги и атрибуты для содержимого комментария, они ещё есть в $allowedtags. О том, как их менять, я рассказывал тут,
  • user_description, pre_user_description – то же, что и default, но ещё разрешён атрибут rel для ссылок;
$allowed_protocols
(массив) Массив из поддерживаемых протоколов в урле (http,ftp и так далее). Если в переданном URL используется протокол, который не указан в этом массиве, то функция возвращает пустую строку. По умолчанию – значение функции wp_allowed_protocols(), которая возвращает массив:
Array
(
    [0] => http
    [1] => https
    [2] => ftp
    [3] => ftps
    [4] => mailto
    [5] => news
    [6] => irc
    [7] => irc6
    [8] => ircs
    [9] => gopher
    [10] => nntp
    [11] => feed
    [12] => telnet
    [13] => mms
    [14] => rtsp
    [15] => sms
    [16] => svn
    [17] => tel
    [18] => fax
    [19] => xmpp
    [20] => webcal
    [21] => urn
)

Примеры

1. Как задать разрешённые HTML-теги и атрибуты

Каждый тег и каждый утрибут указываются в виде ассоциативного массива.

  • Каждый тег – это ассоциативный массив, состоящий названий поддерживаемых атрибутов. Например в примере ниже мы видим, что тег <img> поддерживает лишь атрибут src и alt, все остальные атрибуты будут удалены.
  • Каждый атрибут – это тоже ассоциативный массив из его значений. То есть мы ко всему прочему можем передать например в src несколько значений URL картинок, остальные будут удалены. Очень мощная фильтрация, согласен.
$allowed_html = array(
	'a' => array(
		'href' => array(),
		'title' => array()
	),
	'br' => array(),
	'em' => array(),
	'strong' => array(),
	'img' => array(
		'src' => array(),
		'alt' => array(),
	)
);
echo wp_kses( $string, $allowed_html );

2. Очистка строки

Теперь хочу предложить вам почистить совершенно определённую стркоу.

$str = 'Привет! Это картинка <a href="#"><img src="cat.jpg" alt="котейка" width="100" height="100" /></a> кота.';
echo wp_kses( 
	$str
	array( 
		'img' => array( 
			'src' => array(),
			'alt' => array(),
		),
	)
);
// Привет! Это картинка <img src="cat.jpg" alt="котейка" /> кота.

Как можно заметить в примере, ссылка была удалена, а также и пара атрибутов из тега <img>.

Миша

Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школе Нетология.

Пишите, если нужна помощь с сайтом или разработка с нуля.

Комментарии — 1

Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.

Миша Рудрастых и WordPress

Полезности из мира WordPress и жизни студии.

Мой телеграм-канал