PHP没有在正确的地方回显

米勒媒体

我正在WordPress网站上运行一些PHP代码,当PHP运行以回显某些信息时,它并没有在正确的位置回显它。该代码的缩写版本是:

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

该短代码用于XYZ PHP代码插件,该代码基本上只是在WordPress帖子中使用“包含”的一种方式。我已经在WP数据库中设置了一些自定义设置,但这只是基本的数据库调用。从数据库成功返回了所有信息,因此没有任何问题。我在这里使用的PHP代码是:

$sql = "SELECT * FROM wp_categories_table";
$result = $wpdb->get_results($sql);

echo "<ul class='category_list'>";

foreach( $result as $results ) {
    $category = $results->category; 
    $number = $results->number_of;
    $category_html = htmlentities($category);

    echo "<li><a href='?search-class=DB_CustomSearch_Widget-db_customsearch_widget&widget_number=preset-default&cs-all-0=&cs-post_cat-1=".$category_html."&search=Search'>".$category." (".$number.")</a></li>";
}

echo "</ul>";

发生的是,当PHP代码运行时,它将在div.description之后(以及div#home_left_middle之前)回显它,并且仅将H2保留在home_left_middle div中。那不是运行代码的地方。

奇怪的是,我在另一个站点上使用了完全相同的代码(我复制了此站点,因为我们只是在更改服务器,但内容完全相同),并且在其他服务器上也可以正常工作。这是一个VPS,所以我想知道是否没有在服务器上正确安装某种PHP扩展名,这可能会导致这种情况?我知道这是可以达到的,但是我对于为什么在相同版本的WordPress中使用完全相同的代码并使用相同的主题和CSS文件会在两个不同的站点上产生不同的结果感到困惑。我看到的唯一区别可能是服务器,除非我忽略了一些小错误?

编辑

对于那些询问输出缓冲问题的人,我最近从最后一台服务器复制了php.ini文件,输出缓冲代码如下所示:

; output_buffering
;   Default Value: Off
;   Development Value: 4096
;   Production Value: 4096

因此,它似乎已被注释掉。

大卫

就像注释中建议的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

在的WordPress文档中add_shortcode(),以下文本确实很突出。您可以轻松更改所有echo语句以将值附加到字符串,然后整体返回该字符串。

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

https://codex.wordpress.org/Function_Reference/add_shortcode

希望这可以帮助您解决此问题,但是我之前从未听说过发生这样的错误。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

PHP - 有没有办法在回声所在的地方回显文本?

来自分类Dev

PHP类未正确回显

来自分类Dev

PHP无法正确“回显” JavaScript

来自分类Dev

PHP类未正确回显

来自分类Dev

$ row没有正确地从MySQL数据库回显一行

来自分类Dev

Cron没有在cron内部回显正确的值,但外部工作正常

来自分类Dev

带有LIKE数组的PHP和MYSQLI:无法正确回显所有内容

来自分类Dev

为什么没有在css.php中回显php无效?

来自分类Dev

试图用PHP回显mysql表中没有的每个int

来自分类Dev

Mailgun没有达到最后的回显/测试语句(PHP / Ubuntu设置)

来自分类Dev

使用PHP回显没有空格的字符串

来自分类Dev

带有回显php的html模板

来自分类Dev

带有 javascript 回显的 php 变量

来自分类Dev

在不同的地方回显特定的行

来自分类Dev

Laravel路线似乎没有去正确的地方

来自分类Dev

vim在制作后没有回显消息

来自分类Dev

回声“ $ myvar” | awk'FNR ....'没有回显任何内容

来自分类Dev

Joomla 3.0没有回显用户类型

来自分类Dev

Telnet没有从xinetd脚本输出回显

来自分类Dev

在文件中回显没有这样的文件或目录

来自分类Dev

ADB回显给出“没有这样的文件或目录”

来自分类Dev

无法打开流?图片上传但没有回显

来自分类Dev

如果没有结果,如何只为 php foreach 循环结果回显一条消息并隐藏消息?

来自分类Dev

PHP,否则回显

来自分类Dev

如何回显<?php?>

来自分类Dev

PHP回显if语句

来自分类Dev

回显PHP内容

来自分类Dev

PHP无法回显带有字符串的函数

来自分类Dev

PHP-从MySQL SELECT查询回显所有结果