WP_KSES_ALLOWED_HTML(): Получение разрешенных HTML-тегов │ WP 3.5.0

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.

Leave a Reply

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