在“循环”echo get_permalink()
或the_permalink()
内部工作正常并产生类似http://www.example.com/path-to-post
,的内容,直到我将这些调用放在HTML中的引号内如此。
<p>
This is normal HTML!
"<?php the_permalink()?>"
</p>
此时它神奇地变成了网站相对网址,就像“/ path-to-post”一样。
我只是想通过在引号和php之间加一个空格来避免这个问题,这对链接和东西很好用,但是这里发生了什么?从什么时候开始PHP才能读取php块之外的内容并做出反应呢?为什么会发生这种情况?
答案 0 :(得分:2)
答:很长一段时间(想想PHP 4)它能够将输出的文本捕获到缓冲区中,然后像字符串一样读取缓冲区。见ob_start()。从技术上讲,函数可以检查缓冲区中的最后一个字符是否为"
,并且在这种情况下表现不同。
问:为什么会发生这种情况?
答:您确定the_permalink()
功能正在发生这种情况吗?可能有一个插件试图确保绝对URL不会在<a href="<?php the_permalink() ?>">
上下文中使用。你安装了哪些插件?也许这甚至是默认行为,我只是在wp-includes / link-template.php中对the_permalink()
的快速扫描中看不到它。
您可以尝试其他一些方法来解决它。我要尝试的第一件事是使用"
而不是文字"
。
答案 1 :(得分:0)