用于wordpress函数的foreach循环的语法问题

时间:2012-01-23 22:58:05

标签: php wordpress function foreach

更新

我的小部件设置为输出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)不会输出任何内容。

1 个答案:

答案 0 :(得分:1)

尝试用此替换foreach并查看它是否符合您的要求:

for ($i = 0; isset($body[$i]) && $i < $widgetnumber; $i++) {
    $final_html .= $i.' '.$body[$i];
}