我正在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] 删除。
我来说两句