PHP没有在正确的位置回响

PHP没有在正确的位置回响,php,html,mysql,wordpress,Php,Html,Mysql,Wordpress,我在我的WordPress站点上运行一些PHP代码,当PHP运行以回显某些信息时,它不会在正确的位置回显。代码的缩写版本为: <div class="description cms"> <div id="home_left_middle"> <h2>Search By Category</h2> [xyz-ips snippet="Category-List"] </div> </

我在我的WordPress站点上运行一些PHP代码,当PHP运行以回显某些信息时,它不会在正确的位置回显。代码的缩写版本为:

<div class="description cms">
    <div id="home_left_middle">
        <h2>Search By Category</h2>
        [xyz-ips snippet="Category-List"]
     </div>
</div>

所以它似乎被注释掉了。

就像注释中建议的maioran84一样,这可能是输出缓冲区的一些问题。我建议您将php.ini文件从工作站点复制到非工作站点服务器

查看PHP配置文件内部,有一些设置可能会导致输出在wordpress准备就绪之前显示出来

; Implicit flush tells PHP to tell the output layer to flush itself
; automatically after every output block.  This is equivalent to calling the
; PHP function flush() after each and every call to print() or echo() and each
; and every HTML block.  Turning this option on has serious performance
; implications and is generally recommended for debugging purposes only.
; http://php.net/implicit-flush
; Note: This directive is hardcoded to On for the CLI SAPI
implicit_flush = Off

output_buffering = 4096
查看
add\u shortcode()
的WordPress文档,下面的文本块非常突出。您可以轻松地更改所有
echo
语句,将值附加到字符串,然后返回整个字符串

请注意,由短代码调用的函数不应产生任何类型的输出。短代码函数应返回用于替换短代码的文本。直接生成输出将导致意外的结果。这类似于过滤器函数的行为方式,因为它们不应该从调用中产生预期的副作用,因为您无法控制从何时何地调用它们


希望这能帮助您解决这个问题,但我以前从未听说过这样的错误。

我知道这个问题很老,已经解决了,但我也遇到了同样的问题,并设法以不同的方式解决了它,所以我想与大家分享:)

我使用的是和你一样的wordpress插件,XYZ php代码,它在被调用的div上方输出。我切换到另一个名为“phpcodeforposts”的插件,它的工作原理与XYZ完全相同,除了有一个稍微好一点的代码编辑器之外,它的输出也完全符合预期


这很奇怪,因为我通常在我的WP构建中使用XYZ,而且它总是工作得很好,所以我能猜到的就是插件交互不好。很明显,插件的工作方式不同,但我今天没有勇气去弄清楚是什么;)

您是在查看源代码还是输出?源代码可以通过“查看源代码”查看,也可以通过Google Chrome上的inspector查看。看网页的时候也很明显。我只能猜测。。。。。但短代码回调返回数据,而不是回显。在大多数情况下,短码回调将通过打开输出缓冲区、捕获所有回显数据,然后返回输出缓冲区的内容来避免这种情况。您可能在Wordpress安装中安装了一个插件,该插件可以打开输出缓冲区,并保持其打开状态(有时这样做是为了允许以后按照Wordpress的操作顺序进行重定向)。试着一个接一个地禁用你的插件(除了XYZ PHP),看看这会不会改变什么。不过,我越想它,就越意识到如果是这样的话,你的文本可能会在以后而不是更早的时候输出。不过,检查插件冲突通常是调试的第一步。嗨@maiorano84,禁用插件并不能解决问题。还有其他想法吗?我尝试了几种不同的方式来格式化代码,但结果仍然是一样的……php.ini文件应该是这样的吗?我将代码放在上面,以显示最后一个php.ini文件的外观。我已将其复制到当前服务器,但它不工作。我需要通过WHM重新启动PHP来反映更改吗?另外,我按照您所说的那样编辑了代码(我今天早些时候就想到了),但不幸的是,这没有改变任何东西。它成功了。我必须进入.htaccess并将加载的配置文件更改为我上载的旧php.ini文件的当前路径。这令人困惑。非常感谢你的帮助。我学到了一些新东西!
; output_buffering
;   Default Value: Off
;   Development Value: 4096
;   Production Value: 4096
; Implicit flush tells PHP to tell the output layer to flush itself
; automatically after every output block.  This is equivalent to calling the
; PHP function flush() after each and every call to print() or echo() and each
; and every HTML block.  Turning this option on has serious performance
; implications and is generally recommended for debugging purposes only.
; http://php.net/implicit-flush
; Note: This directive is hardcoded to On for the CLI SAPI
implicit_flush = Off

output_buffering = 4096