的更新 的
我的小部件设置为输出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)
不会输出任何内容。
答案 0 :(得分:1)
尝试用此替换foreach
并查看它是否符合您的要求:
for ($i = 0; isset($body[$i]) && $i < $widgetnumber; $i++) {
$final_html .= $i.' '.$body[$i];
}