it-roy-ru.com

Должен ли я всегда предпочитать esc_attr_e & esc_html_e вместо _e?

Я работаю, чтобы интернационализировать мой плагин. Как я вижу на сайте Wordpress о удалении , там написано, что вы всегда должны его использовать. Но, как я вижу во многих популярных плагинах, они использовали _e, за исключением нескольких конкретных случаев. Так должен ли я всегда использовать экранирование или нет для всех строк, если нет, то для каких конкретных случаев мы должны его использовать?

1
learning_13

Всегда избегайте вывода, если у вас нет веской причины не делать этого.

Главное, что вы теряете при экранировании переведенных строк - это возможность использовать html-теги и html-сущности в исходной строке и переводах, но вам, вероятно, не следует попадать в ситуацию, когда переводчики обязаны знать html только для того, чтобы перевести слова в первую очередь.

Если по какой-либо причине вам необходимо включить html-сущность как часть строки, вы можете использовать printf/sprintf, чтобы дать переводчику некоторую гибкость в расположении такого сущности в строке с чем-то вроде

printf('%s&%s',esc_html__('first part','td'),esc_html__('second part','td'))

где & просто пример для html-сущности.

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

2
Mark Kaplun