# Разрешение специальных 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, где указаны разрешенные теги для комментариев. Однако редактировать файлы ядра — не лучший подход, потому что все изменения будут потеряны при обновлении, и придется снова все переделывать.
В конечном итоге мне пришла в голову простая идея: использовать специальный "хуки" для добавления новых тегов. Я нашел способ сделать это, вызвав глобальную переменную, в которой хранятся разрешенные теги, и добавив к ней свои собственные.
Вот пример кода:
// Разрешаем теги в комментариях для посетителей
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 );
Этот код позволяет использовать тег <pre> с атрибутами class и code, а также теги <ul>, <li>, <ol> в комментариях. Вы также можете добавлять любые другие теги, но будьте осторожны с этим из соображений безопасности.
Чтобы код заработал, вам нужно вставить его в файл functions.php вашей темы. Если у вас нет этого файла, создайте его.
## Разрешение тегов/атрибутов тегов в контенте постов
Чтобы расширить список разрешенных тегов для контента постов, вы можете сделать то же самое, но с глобальной переменной $allowedposttags.