我应该转义诸如the_title,the_excerpt,the_content之类的wordpress函数吗


15

我看过代码,但看不到任何类似功能的转义字符the_title the_content the_excerpt。我可能没有正确阅读。我是否需要在主题开发中转义这些功能,例如:

esc_html ( the_title () )

编辑:上面的代码下面的答案中指出,无论如何都是错误的-该代码应已阅读 esc_html ( get_the_title () )


不,这些功能已经过消毒,因此不需要这样做。除了the_content从TinyMCE编辑器输出HTML(在其中输入)的情况。对于表单输入或前端(例如,您的用户)创建的数据,这尤其保留。
亚当

Answers:


15

转义完全取决于您使用这些函数的上下文。安全显示内部<h1>标签的内容,显示value输入字段的属性的内容不一定安全,甚至作为href属性值也不一定安全。

简而言之-输出时,请自己进行消毒。尽管对于the_title ()get_the_title ()esc_html这不是必需的,因为WordPress应用了以下功能:

注意: the_title打印标题-因此esc_html ( the_title () )无法使用。同样,the_content打印内容(在任何情况下,您都希望内容显示HTML)。


糟糕,我...是的,当然esc_html(the_title())无法正常工作。感谢您的回答。
byronyasgur 2012年

4
相关阅读:输出文章标题中的HTML 属性,使用the_title_attribute()
芯片贝内特

6

是和否-取决于是否要输出这些函数中的html。the_content()例如,如果您进行转义,并且其中包含<div>标签,则实际上该标签将被输出到页面&lt;div&gt;

顺便说一句,如果您确实转义了这些函数的输出,则将需要使用它们的“ get_”等效项(例如get_the_content()),因为这些函数直接回显了它们的输出。


0

您可以简单地编写如下函数并将其挂接到the_title过滤器中:

function my_escape_title( $title ){
    return esc_html( $title );
}
add_filter( 'the_title', 'my_escape_title' );
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.