WordPress как на ладони
wordpress jino

Добавляем допустимые 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 вашего шаблона. Если такого файла у вас в шаблоне нет, то его нужно создать.

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

    Благодарю, пригодилось. smile

    Ответить6.5 лет назад #
  • Otshelnik-Fm181 cайт: across-ocean.otshelnik-fm.ru

    а как запретить использовать тег script? alert('Ыч');

    Ответить5.7 лет назад #
    • Otshelnik-Fm181 cайт: across-ocean.otshelnik-fm.ru

      здесь не прошло. на другом блоге прошел скрипт. выводит alert.

      <script>alert('Ыч');</script>

      Вообще реально через форму комментариев или поисковую форму залить какой нибудь скрипт, раскрыть пути к бд, получить доступ к ней? Вопросы безопасности интересуют.

      Ответить5.7 лет назад #
  • webscs cайт: www.icka.ru @

    Здравствуйте, а может подскажете как решить проблему, в админке редактируя пост я добавляю html форматирование

    </codе>
    <prе name="code" class="one-c">
    текст текст
    </prе>
    </codе>

    но как только я перехожу в форму интерактивного редактирования (не html) вместо ` появляется символ пробела -&nbsр; а в теге исчезает атрибут neme

    Ответить5.5 лет назад #
  • xsi

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

    Ответить1.4 года назад #
  • xsi

    а еще вопрос - можно ли как-то оборачивать ссылки на картинки тегами автоматически? чтобы комментаторов избавить от написания тегов...
    пысы не по теме.: стянул идею подгружать смайлы ajax запросом, за это отдельное спасибо smile

    Ответить1.4 года назад #
  • Denis Creative @

    Добрый день, подскажите, пожалуйста, как добавить панель с кнопками для вставки кода в комментарии WordPress, а то старый плагин Comment Form Quicktags нормально вставляет только теги для жирности, курсива и ссылок а вот вместо кода внутри тегов

    <code ></code >

    выводится пустое поле...

    1

Здравствуйте, !

Ваш комментарий