Как добавить специальные HTML-теги в комментарии WordPress

# Разрешение специальных 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.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *