WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru

Добавляем допустимые HTML теги в комментариях

Столкнулся давеча с проблемой - мне нужно было, чтобы любой посетитель сайта мог в комментариях использовать html тег <pre class="">.

Но, как вам наверное известно, WordPress позволяет добавлять теги в комментариях в ограниченном виде, точнее в комментариях дозволены только такие html теги:

<a href="" title=""> <abbr title=""> 
<acronym title=""> <b> <blockquote cite=""> 
<cite> <code> <del datetime=""> 
<em> <i> <q cite=""> <strike> <strong>
Как расширить этот список разрешенных html тегов в комментариях?

На этот вопрос я попытался ответить когда-то давно, и не без помощи со стороны. И все что я смог - это хирургически поправить файл WordPress: wp-includes/kses.php, в котором собственно и указываются разрешенные теги в комментариях. Однако руками лазить в файлы движка - не дело, т.к. при обновлении все изменения сотрутся и придется заново все менять.

Альтернативное решение мне представлялось в виде хука, но такой хук я найти не смог. В конце концов, поняв как все это дело работает, ко мне пришла светлая и до крайности простая мысль: вызвать переменную в которой указаны разрешенные теги глобально и прилепить к ней свои, дополнительные теги smile

Выглядит это так:

// добавляем допустимые теги в комментариях для посетителей
global $allowedtags;

$allowedtags_add = array (
	'pre' => array(
		'class' => true,
		'code'  => true
	),
	'img' => array(
		'alt'    => true,
		'height' => true,
		'src'    => true,
		'width'  => true,
	),
	'ul' => true,
	'li' => true,
	'ol' => true,
);

$allowedtags = array_merge( $allowedtags, $allowedtags_add );

Все гениальное просто smile

Вышеуказанный код добавляет возможность писать в комментариях тег <pre> с атрибутами class и code и теги ul li ol. По аналогии можно добавить любые другие теги. Однако не стоит этим злоупотреблять, в целях безопасности.

Для того, чтобы все работало этот код необходимо поместить в файл functions.php вашего шаблона. Если такого файла у вас в шаблоне нет, то его нужно создать.

Разрешим теги/атрибуты тегов в контенте записи

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

12 комментов