【发布时间】:2012-01-23 22:58:04
【问题描述】:
更新
我的小部件设置为输出 div,而不是 li 元素,因此 $widgets_array 没有用。
我通过将<li 部分更改为<div 解决了这个问题
谢谢你的回答
我有一个以随机顺序显示用户指定数量的小部件的功能。变量$widgetnumber 应该控制要显示的小部件的数量,但它不起作用。不管输入什么数字,都会显示所有的小部件,如果输入0,则不显示小部件,所以有些逻辑是起作用的。
我希望默认显示 1 个小部件。
我已经回显了变量并且它们被正确填充。有没有人看到任何可能导致它无法按上述方式运行的东西?
谢谢!
功能齐全:
// Sidebar widget limit
function limit_widgets($sidebar){
ob_start();
$widgets = dynamic_sidebar($sidebar);
if($widgets){
$html = ob_get_contents();
$widgets_array = explode("<li",$html);
$widgets_end = count($widgets_array);
$body = array_slice($widgets_array, 0, $widgets_end+1);
shuffle($body);
global $wp_query;
$postid = $wp_query->post->ID;
$widgetnumber = intval(get_post_meta($postid, 'widget_number', true));
var_dump($widgetnumber);
var_dump($body);
for ($i = 0; isset($body[$i]) && $i < $widgetnumber; $i++) {
$final_html .= $i.' '.$body[$i];
}
}
else{
$final_html = "";
}
ob_end_clean();
echo $final_html;
}
HTML 输出为:
0
<div class="ad-feature">
<a class="widget_sp_image-image-link" target="_blank" href="http://www.toysrus.com/shop/index.jsp?categoryId=2255956" target=""><img alt='' src="https://.../wordpress/wp-content/uploads/2012/01/ad.jpg" style="" /></a>
</div>
<div class="ad-feature">
<a class="widget_sp_image-image-link" target="_blank" href="http://jcp.is/JCPMerchTab" target=""><img alt='JCPenny' src="http://.../wordpress/wp-content/uploads/2012/01/Tshirtad2.png" style="" /></a>
</div>
此外,放置var_dump($widget); 和var_dumb($body) 不会输出任何内容。
【问题讨论】:
-
在 foreach 之前
var_dump($widgetnumber);会得到什么? -
感谢您的建议 Alien...
var_dump($widgetnumber);不输出任何内容...但是 foreach 中的echo $widgetnumber;输出正确的数字 -
if($widget && $widgetnumber != 0){尝试将!=0更改为!==0 -
感谢 Paul,但这并没有改变任何事情。
标签: php wordpress function foreach