我已经注意到,我在WordPress网站中运行的php在特定情况下并未真正回显某些字符串。
示例:
<a href="<?php echo esc_url(the_permalink()); ?>">link</a>
<a href="<?php esc_url(the_permalink()); ?>">link</a>
两个代码都在我的wordpress网站上输出了永久链接。 (版本:PHP 7.17,WP 4.9.8)
问题: 何时需要使用echo和我需要注意哪些安全问题?
答案 0 :(得分:2)
为什么都输出URL的原因是您使用的是the_permalink()-永久链接的 echos 。这又意味着它不会遍历您的esc_url
-
相反,您需要使用echo esc_url( get_the_permalink() );
-其中get_the_permalink()不会 回显,但是会返回-因此它将传递到{{ 1}},然后需要esc_url
echo
和the_permalink
之间的唯一区别:一个回声,一个返回。
请注意,WordPress充满了以相同方式工作的便捷功能:
the_ID()与get_the_ID(),
the_title()与get_the_title(),
等等...
特殊情况:
the_content()与get_the_content()
但是请注意,get_the_permalink
尽管命名遵循相同的模式并回显与返回,但the_content
还有一个额外的区别是它通过the_content
过滤器传递内容(这做了很多工作)格式,扩展短代码等)。
答案 1 :(得分:0)
根据官方source,函数the_permalink()显示当前帖子的永久链接。 因此,它具有内置功能,可以在不回显的情况下打印输出,因此您可以将所需的任何文本用作链接文本,在这种情况下为“永久链接”。
<a href="<?php the_permalink(); ?>">permalink</a>
回声
echo()函数输出一个或多个字符串。
echo实际上不是一个函数(它是一种语言构造),所以您 不需要使用括号。回声(不同于其他 语言构造)的行为不像一个函数,因此它不能 始终在函数的上下文中使用。另外,如果你想 传递多个参数以回显,这些参数一定不能 括在括号内。