esc_html__()

Получает перевод текста $text и экранирует его для безопасного использования в HTML-выводе
Функция WordPress
INT 2.8.0
WordPress Icon

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

Функция esc_html__() используется для получения перевода текста и его экранирования для безопасного использования в HTML-выводе. Она является частью системы локализации WordPress и используется для перевода текстовых строк на различные языки.

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

esc_html__( string $text, string $domain = 'default' ): string

Функция esc_html__() принимает два параметра: $text (обязательный) и $domain (необязательный). Она возвращает переведенный текст в виде строки.

  • $text (string) — Обязательный. Текст для перевода.
  • $domain (string) — Необязательный. Домен текста. Уникальный идентификатор для получения переведенных строк. По умолчанию ‘default’.

Функция возвращает переведенный текст в виде строки.


/**
 * Пример использования функции esc_html__()
 *
 * Переводит и экранирует текст "Hello, World!" для безопасного использования в HTML-выводе.
 * Используется домен "my-theme" для получения перевода.
 */
$text = esc_html__( 'Hello, World!', 'my-theme' );

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

Преобразование текста в безопасный HTML-код


$text = 'Hello, <script>alert("XSS");</script> World!';
$escaped_text = esc_html__($text);
echo $escaped_text;

Результат:

Hello, &lt;script&gt;alert(&quot;XSS&quot;);&lt;/script&gt; World!

Функция esc_html__() преобразует специальные символы в их HTML-сущности, чтобы предотвратить XSS-атаки. В данном примере, текст «Hello, <script>alert(«XSS»);</script> World!» будет преобразован в «Hello, &lt;script&gt;alert(&quot;XSS&quot;);&lt;/script&gt; World!». Это позволяет безопасно выводить текст на веб-странице, не выполняя нежелательный JavaScript код.

Перевод и экранирование текста для использования в HTML-выводе


$text = 'Hello, World!';
$translated_text = esc_html__($text, 'my-text-domain');
echo $translated_text;

Результат:

Hello, World!

Функция esc_html__() также позволяет переводить текст на другие языки с помощью указания текстового домена. В данном примере, текст «Hello, World!» будет выведен без изменений, так как не указан текстовый домен. Если бы был указан текстовый домен, функция бы попыталась найти перевод этого текста в файле переводов.

Защита от XSS-атак


$text = '<script>alert("XSS");</script>';
$escaped_text = esc_html__($text);
echo $escaped_text;

Результат:

&lt;script&gt;alert(&quot;XSS&quot;);&lt;/script&gt;

Функция esc_html__() также защищает от XSS-атак, предотвращая выполнение вредоносного JavaScript кода. В данном примере, текст «<script>alert(«XSS»);</script>» будет преобразован в «&lt;script&gt;alert(&quot;XSS&quot;);&lt;/script&gt;», что предотвратит выполнение JavaScript кода при выводе на веб-странице.

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

Как использовать функцию esc_html__() для безопасного вывода текста в HTML?

Функция esc_html__() в WordPress позволяет получить перевод строки текста и экранировать его для безопасного использования в HTML-выводе.

Для использования функции esc_html__() необходимо передать два параметра: $text (обязательный) и $domain (необязательный).

Первый параметр $text представляет собой текст, который требуется перевести.

Второй параметр $domain является необязательным и представляет собой уникальный идентификатор для получения переведенных строк. По умолчанию он установлен в ‘default’.

Функция esc_html__() возвращает переведенный текст в виде строки.

Как изменить текстовый домен для функции esc_html__()?

Для изменения текстового домена функции esc_html__() необходимо передать второй параметр $domain с желаемым идентификатором.

Например, чтобы изменить текстовый домен на ‘my-theme’, можно использовать следующий код:


$text = esc_html__( 'Hello, World!', 'my-theme' );

В этом примере функция esc_html__() будет искать перевод строки ‘Hello, World!’ в текстовом домене ‘my-theme’.

Можно ли использовать функцию esc_html__() для безопасного вывода текста в атрибуты HTML-элементов?

Да, функцию esc_html__() можно использовать для безопасного вывода текста в атрибуты HTML-элементов.

Например, чтобы безопасно вывести текст в атрибуте ‘title’ HTML-элемента, можно использовать следующий код:


$title = esc_html__( 'This is a title', 'my-theme' );
echo '<div title="' . $title . '">Content</div>';

В этом примере функция esc_html__() экранирует текст ‘This is a title’ и сохраняет его безопасным для использования в атрибуте ‘title’ HTML-элемента.

Как обрабатывать специальные символы при использовании функции esc_html__()?

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

Для обработки специальных символов в тексте, который будет передан в функцию esc_html__(), достаточно просто вызвать эту функцию и передать ей нужный текст в качестве аргумента:


$text = 'Some text with special characters';
$translated_text = esc_html__($text);

Как использовать функцию esc_html__() внутри других функций шаблонов?

Функция esc_html__() может быть использована внутри других функций шаблонов для безопасного вывода текста. Например, в функции, которая выводит заголовок страницы:


function my_custom_title() {
    $title = get_the_title();
    $safe_title = esc_html__($title);
    echo '<h1>' . $safe_title . '</h1>';
}

Как использовать функцию esc_html__() для безопасного вывода текста в CSS стили?

Функция esc_html__() также может быть использована для безопасного вывода текста в CSS стили. Например, для добавления безопасного значения в свойство content в CSS:


.my-element::before {
    content: "<?php echo esc_html__('Some text', 'my-theme'); ?>";
}

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

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

  • Функция wp_kses_post(): Преобразует строку в безопасный HTML-код, удаляя все теги, кроме разрешенных.
  • Функция wp_kses(): Фильтрует HTML-код, разрешая только указанные теги и атрибуты.
  • Функция wp_kses_data(): Фильтрует HTML-код, разрешая только безопасные теги и атрибуты.
  • Функция wp_kses_post_deep(): Рекурсивно применяет wp_kses_post() к элементам массива или объекта.
  • Функция wp_kses_allowed_html(): Возвращает массив разрешенных тегов и атрибутов для использования в wp_kses().
  • Функция wp_kses_attr(): Фильтрует атрибуты HTML-тега, разрешая только безопасные значения.
  • Функция wp_kses_bad_protocol(): Удаляет небезопасные протоколы из URL.
  • Хук pre_kses: Позволяет изменять HTML-код перед его фильтрацией.
  • Хук wp_kses_allowed_html: Позволяет изменять массив разрешенных тегов и атрибутов.
  • Класс WP_Customize_Code_Editor_Control: Класс для создания настраиваемого элемента управления редактором кода в пользовательской настройке.
Обсуждение