WP_KSES_ALLOWED_HTML() │ WP 3.5.0
Функция WP_KSES_ALLOWED_HTML()
возвращает массив разрешённых HTML-тегов и атрибутов для заданного контекста.
Использование
Функцию wp_kses_allowed_html()
можно использовать следующим образом:
$allowed_html = wp_kses_allowed_html( $context );
Параметры
- $context (string|array): Контекст, для которого нужно получить теги. Разрешённые значения:
'post'
: для содержимого поста'strip'
: чтобы вернуть пустой массив'data'
: для данных'entities'
: для HTML-сущностей- Название фильтра поля, например,
pre_user_description
- Или массив разрешённых HTML-элементов и атрибутов.
По умолчанию:''
Пример использования
1. Получение списка разрешённых тегов по умолчанию
Например, чтобы получить список для польз��вателя с ролью администратора:
$data = wp_kses_allowed_html( 'post' );
print_r( $data );
Вывод:
Array
(
[a] => Array
(
[href] => 1
[title] => 1
)
...
)
2. Указание контекста
Для получения различных результатов в зависимости от указанного контекста:
-
Если указать 'strip', будут удалены все HTML-теги:
$data = wp_kses_allowed_html( 'strip' ); print_r( $data); /* Output will be an empty array: Array ( ) */
-
Для получения списка HTML-сущностей:
$data = wp_kses_allowed_html( 'entities' ); print_r( $data); /* Output will be: Array ( [0] => nbsp [1] => iexcl ... ) */
-
Для получения почти всех встроенных элементов (исключая блочные элементы, кроме
blockquote
):$allowed_html = wp_kses_allowed_html( 'data' );
-
Чтобы разрешить почти все HTML-теги, как это делается в содержимом поста:
$allowed_html = wp_kses_allowed_html( 'post' );
Заметки
- Глобальные массивы:
- $allowedposttags: разрешённые HTML-теги для постов.
- $allowedtags: разрешённые HTML-теги в общем.
- $allowedentitynames: разрешённые HTML-сущности.
Изменения
- С версии 3.5.0 — функция введена.
- С версии 5.0.1 — тег
<form>
был убран из списка разрешённых тегов.
Код функции
Ниже приведён код функции wp_kses_allowed_html
.
function wp_kses_allowed_html( $context = '' ) {
global $allowedposttags, $allowedtags, $allowedentitynames;
if ( is_array( $context ) ) {
// Когда $context
— это массив, он на самом деле содержит разрешённые HTML элементы и атрибуты.
$html = $context;
$context = 'explicit';
return apply_filters( 'wp_kses_allowed_html', $html, $context );
}
switch ( $context ) {
case 'post':
$tags = apply_filters( 'wp_kses_allowed_html', $allowedposttags, $context );
// Разрешить <form>
только если есть разрешённые подэлементы.
return $tags;
case 'user_description':
case 'pre_user_description':
$tags = $allowedtags;
$tags['a']['rel'] = true;
return apply_filters( 'wp_kses_allowed_html', $tags, $context );
case 'strip':
return apply_filters( 'wp_kses_allowed_html', array(), $context );
case 'entities':
return apply_filters( 'wp_kses_allowed_html', $allowedentitynames, $context );
case 'data':
default:
return apply_filters( 'wp_kses_allowed_html', $allowedtags, $context );
}
}
Связанные функции
Функция wp_kses_allowed_html()
связана с другими функциями для работы с HTML:
allowed_tags()
wp_filter_kses()
wp_filter_nohtml_kses()
wp_kses()
wp_kses_array_lc()
wp_kses_data()
wp_kses_hair()
wp_kses_post()
wp_kses_uri_attributes()
wp_kses_version()
Эти функции помогают управлять допустимыми HTML-тегами и их безопасностью в WordPress.