wp_kses()

Позволяет изменить текстовое содержание и удаляет недопустимые HTML-теги
Функция WordPress
INT 1.0.0
WordPress Icon
Содержание
  1. Описание функции
  2. Примеры использования
  3. Применение фильтрации текста
  4. Очистка HTML-кода от недопустимых элементов
  5. Разрешение определенных HTML-элементов и атрибутов
  6. Вопросы и ответы
  7. Какие HTML элементы и атрибуты разрешены в функции wp_kses()?
  8. Как добавить новые HTML элементы и атрибуты в список разрешенных в функции wp_kses()?
  9. Как удалить определенные HTML элементы и атрибуты из списка разрешенных в функции wp_kses()?
  10. Как использовать функцию wp_kses() для фильтрации контента в определенном контексте?
  11. Как добавить новые URL протоколы в список разрешенных в функции wp_kses()?
  12. Как изменить список разрешенных URL протоколов в функции wp_kses()?
  13. Как обрабатывать контент, содержащий вложенные HTML элементы, с помощью функции wp_kses()?
  14. Как обрабатывать контент, содержащий JavaScript код, с помощью функции wp_kses()?
  15. Как обрабатывать контент, содержащий стили CSS, с помощью функции wp_kses()?
  16. Связанные элементы

Описание функции

Функция wp_kses() фильтрует текстовое содержимое и удаляет недопустимые HTML-теги и атрибуты.

Функция использует список разрешенных HTML-элементов и атрибутов, переданный в качестве параметра, для фильтрации содержимого. Она также проверяет URL-протоколы и удаляет недопустимые ссылки.

Использование

wp_kses( string $content, array[]|string $allowed_html, string[] $allowed_protocols = array() ): string

Функция wp_kses() принимает три параметра:

  • $content (обязательный) — текстовое содержимое для фильтрации.
  • $allowed_html (обязательный) — массив разрешенных HTML-элементов и атрибутов, или имя контекста, такого как ‘post’. См. функцию wp_kses_allowed_html() для списка принимаемых имен контекстов.
  • $allowed_protocols (необязательный) — массив разрешенных URL-протоколов. По умолчанию используется результат функции wp_allowed_protocols(). Значение по умолчанию: array().

Функция возвращает отфильтрованное содержимое, содержащее только разрешенный HTML.

<?php
$content = '<script>alert("Hello World!")</script><p>This is a paragraph.</p>';
$allowed_html = array(
  'p' => array(),
  'a' => array(
    'href' => array(),
    'title' => array()
  )
);
$filtered_content = wp_kses( $content, $allowed_html );
echo $filtered_content;
?>

В этом примере мы имеем переменную $content, содержащую HTML-код с недопустимым тегом <script> и разрешенным тегом <p>. Мы также определяем массив $allowed_html, содержащий список разрешенных HTML-элементов и атрибутов.

Затем мы используем функцию wp_kses(), передавая ей переменную $content и массив $allowed_html в качестве параметров. Функция фильтрует содержимое и возвращает только разрешенный HTML.

Наконец, мы выводим отфильтрованное содержимое с помощью функции echo.

Примеры использования

Применение фильтрации текста


$content = 'This is some <strong>text</strong> with <script>alert("dangerous code")</script>';
$filtered_content = wp_kses($content, array(), array());
echo $filtered_content;

Результат:

This is some text with alert("dangerous code")

Функция wp_kses() применяет фильтрацию к текстовому содержимому и удаляет недопустимый HTML-код. В данном примере, исходный текст содержит тег <strong> и <script>, который считается опасным. После применения функции wp_kses(), все недопустимые элементы и атрибуты удаляются, и остается только текст.

Очистка HTML-кода от недопустимых элементов


$content = '<div>This is a <strong>paragraph</strong> with <script>alert("dangerous code")</script></div>';
$allowed_html = array(
    'div' => array(),
    'strong' => array()
);
$filtered_content = wp_kses($content, $allowed_html, array());
echo $filtered_content;

Результат:

<div>This is a <strong>paragraph</strong> with alert("dangerous code")</div>

В данном примере, исходный HTML-код содержит теги <div>, <strong> и <script>. С помощью функции wp_kses() мы указываем, что разрешены только теги <div> и <strong>. Поэтому, после фильтрации, тег <script> удаляется из кода.

Разрешение определенных HTML-элементов и атрибутов


$content = '<div class="container">This is a <strong>paragraph</strong></div>';
$allowed_html = array(
    'div' => array(
        'class' => array()
    ),
    'strong' => array()
);
$filtered_content = wp_kses($content, $allowed_html, array());
echo $filtered_content;

Результат:

<div class="container">This is a <strong>paragraph</strong></div>

В данном примере, исходный HTML-код содержит теги <div> и <strong>, а также атрибут class для тега <div>. С помощью функции wp_kses() мы указываем, что разрешены только теги <div> и <strong>, а также атрибут class для тега <div>. Поэтому, после фильтрации, весь код остается без изменений.

Вопросы и ответы

Какие HTML элементы и атрибуты разрешены в функции wp_kses()?

Функция wp_kses() фильтрует текстовый контент и удаляет недопустимые HTML элементы.

Для определения разрешенных HTML элементов и атрибутов, функция использует параметр $allowed_html. Этот параметр может быть массивом разрешенных элементов и атрибутов или именем контекста, таким как ‘post’. Список принимаемых имен контекста можно найти в функции wp_kses_allowed_html().

По умолчанию, функция wp_kses() использует список разрешенных элементов и атрибутов, определенный в функции wp_kses_allowed_html().

Как добавить новые HTML элементы и атрибуты в список разрешенных в функции wp_kses()?

Чтобы добавить новые HTML элементы и атрибуты в список разрешенных, можно использовать фильтр wp_kses_allowed_html. Этот фильтр позволяет изменять список разрешенных элементов и атрибутов перед их использованием в функции wp_kses().

Пример кода:


function custom_wp_kses_allowed_html( $allowed_html ) {
    // Добавление нового элемента <custom-element>
    $allowed_html['custom-element'] = array(
        'class' => true,
        'id'    => true,
    );
    return $allowed_html;
}
add_filter( 'wp_kses_allowed_html', 'custom_wp_kses_allowed_html' );

Как удалить определенные HTML элементы и атрибуты из списка разрешенных в функции wp_kses()?

Чтобы удалить определенные HTML элементы и атрибуты из списка разрешенных, можно использовать фильтр wp_kses_allowed_html. Этот фильтр позволяет изменять список разрешенных элементов и атрибутов перед их использованием в функции wp_kses().

Пример кода:


function remove_wp_kses_allowed_html( $allowed_html ) {
    // Удаление элемента <script>
    unset( $allowed_html['script'] );
    return $allowed_html;
}
add_filter( 'wp_kses_allowed_html', 'remove_wp_kses_allowed_html' );

Как использовать функцию wp_kses() для фильтрации контента в определенном контексте?

Функция wp_kses() используется для фильтрации текстового контента и удаления недопустимых HTML-элементов. Она принимает три параметра: $content (обязательный) — текстовый контент для фильтрации, $allowed_html (обязательный) — массив разрешенных HTML-элементов и атрибутов или имя контекста, такое как ‘post’, и $allowed_protocols (необязательный) — массив разрешенных URL-протоколов.

Пример использования функции wp_kses() для фильтрации контента в определенном контексте:


$content = 'Some <b>bold</b> text.';
$allowed_html = array(
    'b' => array()
);
$filtered_content = wp_kses( $content, $allowed_html );
echo $filtered_content;

Результат:


Some <b>bold</b> text.

Как добавить новые URL протоколы в список разрешенных в функции wp_kses()?

Для добавления новых URL протоколов в список разрешенных в функции wp_kses() можно использовать фильтр ‘wp_kses_allowed_protocols’. Этот фильтр позволяет добавить новые URL протоколы или изменить существующие.

Пример добавления нового URL протокола в список разрешенных:


function custom_wp_kses_allowed_protocols( $protocols ) {
    $protocols[] = 'custom-protocol';
    return $protocols;
}
add_filter( 'wp_kses_allowed_protocols', 'custom_wp_kses_allowed_protocols' );

Как изменить список разрешенных URL протоколов в функции wp_kses()?

Для изменения списка разрешенных URL протоколов в функции wp_kses() можно использовать фильтр ‘wp_kses_allowed_protocols’. Этот фильтр позволяет изменить существующие URL протоколы или удалить ненужные.

Пример изменения списка разрешенных URL протоколов:


function custom_wp_kses_allowed_protocols( $protocols ) {
    // Удаление протокола 'http' из списка разрешенных
    unset( $protocols['http'] );
    return $protocols;
}
add_filter( 'wp_kses_allowed_protocols', 'custom_wp_kses_allowed_protocols' );

Как обрабатывать контент, содержащий вложенные HTML элементы, с помощью функции wp_kses()?

Функция wp_kses() используется для фильтрации текстового контента и удаления недопустимых HTML элементов.

Для обработки контента, содержащего вложенные HTML элементы, необходимо передать массив разрешенных HTML элементов и атрибутов в качестве второго параметра функции wp_kses(). Этот массив должен быть сформирован в соответствии с правилами, описанными в функции wp_kses_allowed_html().

Пример использования функции wp_kses() для обработки контента с вложенными HTML элементами:


$content = '<div><p>Hello, <strong>world</strong>!</p></div>';
$allowed_html = array(
    'div' => array(),
    'p' => array(),
    'strong' => array(),
);
$filtered_content = wp_kses( $content, $allowed_html );

Как обрабатывать контент, содержащий JavaScript код, с помощью функции wp_kses()?

Функция wp_kses() также может использоваться для обработки контента, содержащего JavaScript код.

Для обработки контента с JavaScript кодом, необходимо передать допустимые протоколы URL в качестве третьего параметра функции wp_kses(). Эти протоколы могут быть определены с помощью функции wp_allowed_protocols().

Пример использования функции wp_kses() для обработки контента с JavaScript кодом:


$content = '<script>alert("Hello, world!");</script>';
$allowed_html = 'post';
$allowed_protocols = array( 'http', 'https' );
$filtered_content = wp_kses( $content, $allowed_html, $allowed_protocols );

Как обрабатывать контент, содержащий стили CSS, с помощью функции wp_kses()?

Функция wp_kses() может быть использована для обработки контента, содержащего стили CSS.

Для обработки контента с CSS стилями, необходимо передать допустимые протоколы URL в качестве третьего параметра функции wp_kses(). Эти протоколы могут быть определены с помощью функции wp_allowed_protocols().

Пример использования функции wp_kses() для обработки контента с CSS стилями:


$content = '<style>body { background-color: red; }</style>';
$allowed_html = 'post';
$allowed_protocols = array( 'http', 'https' );
$filtered_content = wp_kses( $content, $allowed_html, $allowed_protocols );

Функция wp_kses() является мощным инструментом для фильтрации и обработки контента в WordPress. Она позволяет удалить недопустимые HTML элементы, JavaScript код и стили CSS, обеспечивая безопасность и целостность контента.

Связанные элементы

  • Функция add_filter(): добавляет новый фильтр для указанного хука.
  • Функция apply_filters(): применяет все фильтры, связанные с указанным хуком, к заданному значению.
  • Функция do_action(): вызывает все функции, связанные с указанным хуком.
  • Функция add_action(): добавляет новую функцию для выполнения при указанном хуке.
  • Функция remove_filter(): удаляет указанный фильтр для указанного хука.
  • Функция remove_action(): удаляет указанную функцию для указанного хука.
  • Хук init: срабатывает при инициализации WordPress и используется для регистрации функций и фильтров.
  • Класс WP_Hook: представляет хуки в WordPress и обеспечивает их управление.
Обсуждение