我何时需要在WordPress中对字符串使用echo?

时间:2018-08-23 18:49:10

标签: php wordpress

我已经注意到,我在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和我需要注意哪些安全问题?

2 个答案:

答案 0 :(得分:2)

为什么都输出URL的原因是您使用的是the_permalink()-永久链接的 echos 。这又意味着它不会遍历您的esc_url-

相反,您需要使用echo esc_url( get_the_permalink() );-其中get_the_permalink()不会 回显,但是会返回-因此它传递到{{ 1}},然后需要esc_url

echothe_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实际上不是一个函数(它是一种语言构造),所以您   不需要使用括号。回声(不同于其他   语言构造)的行为不像一个函数,因此它不能   始终在函数的上下文中使用。另外,如果你想   传递多个参数以回显,这些参数一定不能   括在括号内。