是否应该过滤内置WP函数的输出,例如get_permalink()
以及著名的WP插件,如ACF(高级自定义字段),如get_field()
?
比如说get_permalink()
呼叫home_url()
哪个呼叫get_home_url()
, none of which do any filtering of the data. 以类似的方式工作the_content()
, the_title()
以及其他熟悉的循环相关函数。
因此,以下内容是否足够?(否esc_attr()
用于WP和ACF功能
<?php while ($wp_query->have_posts() && __return_true($wp_query->the_post()) ) : ?>
<a href="<?=get_the_permalink()?>">
<img src="<?=get_field(\'homepage_thumbnail\')[\'sizes\'][\'thumbnail\']?>" />
</a>
<?php endwhile; ?>
或者我应该对来自插件的数据更加小心吗?(
注意esc_attr()
添加到ACF图像源,第三行<?php while ($wp_query->have_posts() && __return_true($wp_query->the_post()) ) : ?>
<a href="<?=get_the_permalink()?>">
<img src="<?=esc_attr(get_field(\'homepage_thumbnail\')[\'sizes\'][\'thumbnail\']?>)" />
</a>
<?php endwhile; ?>
或者,即使使用股票WP功能,我也应该格外小心吗?(注意esc_attr()
添加到WP anchor href,第二行<?php while ($wp_query->have_posts() && __return_true($wp_query->the_post()) ) : ?>
<a href="<?=esc_attr(get_the_permalink())?>">
<img src="<?=esc_attr(get_field(\'homepage_thumbnail\')[\'sizes\'][\'thumbnail\']?>)" />
</a>
<?php endwhile; ?>
最合适的回答,由SO网友:Mark Kaplun 整理而成
转义用于生成有效的HTML或其他格式,它取决于上下文。
以类似的方式转义url<a href="<?php echo $url?>"....
需要替换任何“&;”&带的字符;(尽管如果你不这样做,浏览器很可能会帮你修复)。
在输入元素中转义url,如<input value="<?php echo $url?>"...
不需要更换“&;”但确实需要替换任何引号字符。
所以一般来说,由于转义是上下文敏感的,所以您可以假设wordpress API不会为您转义它。插件的作用取决于插件本身。