1

在“循环”内echo get_permalink()the_permalink()工作正常并产生类似的东西http://www.example.com/path-to-post直到我将这些调用放在 HTML 中的引号内,就像这样。

<p>
  This is normal HTML!
  "<?php the_permalink()?>"
</p>

在这一点上,它神奇地变成了一个站点相对 url,就像“/path-to-post”一样。

我刚刚发现我可以通过在引号和 php 之间放置一个空格来避免这个问题,这对于链接和东西来说很好,但是这里发生了什么?PHP 什么时候能够读取 php 块之外的内容并对其做出反应?为什么会发生这种情况呢?

4

2 回答 2

2

问:PHP 什么时候能够读取 php 块之外的内容并对其做出反应?

答:很长一段时间以来(想想 PHP 4),它一直能够将输出的文本捕获到缓冲区中,然后像字符串一样读取该缓冲区。见ob_start()。从技术上讲,一个函数可以只检查缓冲区中的最后一个字符是否为 a"并在这种情况下表现不同。

问:为什么会发生这种情况?

A:您确定该the_permalink()功能正在发生这种情况吗?可能有一个插件试图确保绝对 url 不会在<a href="<?php the_permalink() ?>">上下文中使用。你安装了哪些插件?也许这甚至是默认行为,我只是在快速扫描the_permalink()wp-includes/link-template.php 时没有看到它。

您可以尝试其他一些方法来解决它。我会尝试的第一件事是使用&quot;而不是文字"

于 2013-08-30T03:42:15.873 回答
0

好吧,我是个傻瓜。有一个插件,叫做“绝对相对链接”,它正在重新格式化页面。尽管如此,它的运作方式还是很奇怪。它似乎在寻找一个引号,后面紧跟任何类似 URL 的内容并重新格式化它。但即使是一个空格也足以阻止它。而且我没有意识到 PHP 可以在其自身之外的页面上读取内容。学过的知识。

于 2013-08-30T21:56:54.387 回答