Я посмотрел на код, но я не мог увидеть какие-либо экранирующие функции, например, the_title
the_content
the_excerpt
и т. Д. Я, возможно, не правильно его читал. Нужно ли мне избежать этих функций в разработке темы, как:
esc_html ( the_title () )
Изменить: как указано в ответах ниже, приведенный выше код неверен независимо - код должен был прочитать
esc_html ( get_the_title () )
the_content
когда вывод HTML из редактора TinyMCE, в который вы вводите. Это в большей степени зарезервировано для входных данных формы или данных, созданных на внешнем интерфейсе, например, вашими пользователями.Ответы:
Экранирование полностью зависит от контекста, в котором вы используете функции. То, что безопасно для отображения внутри
<h1>
тегов, не обязательно безопасно дляvalue
атрибута поля ввода, и даже это не обязательно будет безопасно в качествеhref
значения атрибута ....Короче - выполняйте дезинфекцию самостоятельно, когда вы ее выводите. Хотя в случае
the_title ()
илиget_the_title ()
,esc_html
это не обязательно, поскольку WordPress применяет следующие функции:convert_chars
wptexturize
Примечание:
the_title
печатает заголовок - поэтомуesc_html ( the_title () )
не будет работать. Точно так жеthe_content
печатает контент (в любом случае вы ожидаете, что контент будет отображать HTML).источник
the_title_attribute()
Да и нет - зависит от того, хотите ли вы выводить html в этих функциях или нет. Если вы
the_content()
, например, экранируете , и он содержит<div>
тег, этот тег будет фактически выводиться на страницу как<div>
взамен.Между прочим, если вы избежите вывода этих функций, вы захотите использовать их эквиваленты "get_" (например
get_the_content()
), так как эти функции напрямую отражают их вывод.источник
Вы можете просто написать такую функцию и подключить ее к фильтру the_title :
источник