Додаємо допустимі 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 .

Залишити коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *