esc_html_x()
— это функция в WordPress, используемая для перевода строк с контекстом и их безопасного отображения в HTML-коде. Эта функция сочетает в себе функционал перевода строки с контекстом (через функцию _x()
) и экранирование HTML-символов (через функцию esc_html()
). Это помогает предотвратить XSS-атаки, обеспечивая безопасное отображение переведенных строк, учитывая их контекст.
Синтаксис
esc_html_x( $text, $context, $domain )
- $text (string): Текст, который нужно перевести и экранировать.
- $context (string): Контекст перевода, помогающий переводчикам понять, в каком контексте используется данная строка.
- $domain (string): Текстовый домен для перевода. Обычно соответствует имени вашего плагина или темы.
Зачем использовать esc_html_x()
?
- Безопасность: Предотвращает XSS-атаки, экранируя HTML-специфические символы.
- Локализация с контекстом: Обеспечивает точность перевода, учитывая контекст, что особенно важно для многоязычных сайтов.
- Удобство: Функция сразу переводит и экранирует текст, что упрощает код и делает его более читаемым.
Примеры использования
Перевод с контекстом в заголовке
Предположим, у вас есть тема или плагин, и вы хотите отобразить заголовок, который можно перевести на другие языки, с указанием контекста.
<h1><?php echo esc_html_x( 'Post', 'noun', 'my-text-domain' ); ?></h1>
В этом примере строка «Post» будет переведена с учетом контекста «noun» (существительное), если соответствующий перевод доступен, и безопасно выведена на экран.
Использование внутри функции
Функция esc_html_x()
также может использоваться внутри других PHP-функций для генерации переведенных и экранированных строк с контекстом.
function get_custom_message() {
return esc_html_x( 'Archive', 'noun', 'my-text-domain' );
}
echo get_custom_message();
В этом примере функция get_custom_message()
возвращает безопасно переведенное сообщение с учетом контекста.
Как добавить переводы
Чтобы строки, передаваемые в esc_html_x()
, можно было перевести, нужно создать файл перевода (например, .po
и .mo
файлы) для вашего текстового домена. Эти файлы обычно располагаются в папке languages
вашего плагина или темы.
Пример создания файла перевода
- Создайте PO-файл: Используйте инструмент, например, Poedit для создания файла перевода.
- Заполните переводы: Введите переводы для всех строк, использующих
esc_html_x()
, с учетом контекста. - Сохраните MO-файл: Poedit автоматически сгенерирует MO-файл, который будет использоваться WordPress для перевода.
Заключение
Функция esc_html_x()
является важным инструментом для разработчиков WordPress, позволяя одновременно обеспечить безопасность и точность перевода строк с учетом контекста. Использование этой функции помогает избежать XSS-атак, экранируя HTML-символы, и упрощает процесс локализации контента.