是否应该使用get_template_directory_uri()对esc_url()进行转义?
我之所以这样问是因为,以默认主题20为例,相同的函数在两个不同的地方使用,但只有在一个地方才能转义。
wp_enqueue_style( 'twentyfifteen-ie', get_template_directory_uri() . '/css/ie.css', array( 'twentyfifteen-style' ), '20141010' );-
<script src="<?php echo esc_url( get_template_directory_uri() ); ?>/js/html5.js"></script>我想说的是,get_template_directory_uri()不需要生成,因为URL不能被外部操纵。
发布于 2016-12-30 11:47:14
会试图让斯威斯皮迪的评论成为答案。短版-视情况而定。
转义不应被随机应用,因为双转义可能会产生一个url (或任何类型的内容),它与预期的url不匹配。转义只应在输出之前应用。因此,上下文比计算URL的特定函数更重要。
在您的示例中,第一个片段只是对URL进行排队,而不输出它。转义的责任被进一步下放到wordpress堆栈中,由实际输出它的代码负责,这就是它没有转义的原因。
第二个片段执行输出,这就是为什么要转义url。
那么,你怎么知道什么时候不应该逃跑呢?希望在将来的某个地方wordpress API的文档中将包含这些信息,但是现在要么遵循完整的代码路径直到实际输出,要么在“滑稽”urls下测试您的主题。
https://wordpress.stackexchange.com/questions/250304
复制相似问题