转义的目的是确保在输出值时,它不能输出任何恶意的内容,或者只会破坏页面的标记。例如,输出变量时,您需要转义某些字符,以便该值不会无意中打开或关闭HTML标记,这可能会破坏页面布局,甚至输出<script></script> 可能运行恶意JavaScript的元素。
WordPress VIP文档对这一概念有很好的概述,并举例说明:https://wpvip.com/documentation/vip-go/validating-sanitizing-and-escaping/
关于您的具体示例:
Must I escape variables, if it is, how can I do it?
例如:
global $redux_demo;在此代码中:
if ( class_exists( \'Redux\' ) ) {
global $redux_demo;
if ($redux_demo[\'button-set-single-archive-services\'] == 2)
{
get_template_part( \'demo-archive-services\' );
die;```
不需要。并非所有变量都需要转义。变量只需要在输出时转义。
$redux_demo 没有被输出,所以这里没有什么需要转义的。
Is it true escaping?
<?php esc_html_e( \'Our Services\', \'hekim\' )?>```
是的。
_e() 是一个允许
\'Our Services\' 要替换为翻译的字符串。这意味着您不能相信此行的输出总是安全的。因此,它需要逃脱。
esc_html_e() 是一个使用自动转义的函数
esc_html(), 运行后
_e() 允许翻译文本。
Functions start with the, need escaping or not?
例如:
<?php the_title(); ?>如果我用以下函数更改这些函数get, 他们需要逃跑吗?函数启动时的输出有什么不同吗the 和功能启动get?
通常,内置函数以the_ 不需要转义,但函数以get_ do需要转义。例如the_permalink() 使用esc_url() 逃脱get_the_permalink() 在输出之前。
Why this escaped function doesnt seem?
在逃离这个法尔之后,似乎没有。我逃跑的错误是什么?真正的形式是什么?
<li><?php esc_html( \'<a href="#"> HOME </a>\' ); ?>xx</li>
的要点
esc_html() 是为了防止值中的任何HMTL被解释为HTML。本例中没有需要转义的内容。如果链接URL是一个变量,则需要对其进行转义。