Two loops in one function

时间:2014-02-26 作者:makerspender

我正在尝试让这个函数与jquery选项卡一起工作,并且我已经让它的一些部分工作起来了。现在,该函数正确地输出

<ul>
<li>item1</li>
<li>item2</li>
etc..
</ul>
但它根本没有发出第二个循环。我对wordpress不是最熟练的,更不用说php本身了,所以我希望能得到一些关于如何正确设置这样一个函数的帮助。

function new_function($type=\'new_function\') {
    $args = array(
        \'post_type\' => \'tabs\',
        \'posts_per_page\' => 10
    );
    //first loop puts out correctly so far.    
    $firstresult .= \'<div id="tabs">\';
    $firstresult .= \'<ul>\';
    $firstloop = new WP_Query($args);
    while ($firstloop->have_posts()) {
        $firstloop->the_post();
        $firstresult .=\'<li><a href="#\'.get_the_title().\'">\'.get_the_title().\'</a></li>\';
                    }
    $firstresult .=\'</ul>\';
        return $firstresult;

    //the second loop does not work at all, but does not break the first part either.
    $result .= \'<div id="tabs-container">\';
    $loop = new WP_Query($args2);
    while ($loop->have_posts()) {
        $loop->the_post();

    $result .=\'<div class="col-md-12">\';
    $result .=\'<div class="quote-content"><blockquote>\'.get_the_content().\'</blockquote></div>\';    
    $result .=\'<div class="quote-author"><p>\' .get_the_title(). \'</p></div>\';
    $result .=\'</div>\';
    }
    $result .= \'</div>\';
    $result .=\'</div>\';
    return $result;
}

1 个回复
最合适的回答,由SO网友:TheDeadMedic 整理而成

无需设置新查询,只需使用第一个查询即可。替换:

$loop = new WP_Query( $args2 );
while ( $loop->have_posts() ) {
     $loop->the_post();
。。。使用:

$firstloop->rewind_posts();
while ( $firstloop->have_posts() ) {
     $firstloop->the_post();
更新:代码中遗漏了一些其他错误,下面是完整的返工:

function new_function() {
    $args = array(
        \'post_type\' => \'tabs\',
        \'posts_per_page\' => 10,
    );

    $result = \'<div id="tabs">\';
    $result .= \'<ul>\';

    $loop = new WP_Query( $args );
    while ( $loop->have_posts() ) {
        $loop->the_post();
        $result .= \'<li><a href="#\' . get_the_title() . \'">\' . get_the_title() . \'</a></li>\';
    }

    $result .= \'</ul>\';
    $result .= \'<div id="tabs-container">\';

    $loop->rewind_posts();
    while ( $loop->have_posts() ) {
        $loop->the_post();

        $result .= \'<div class="col-md-12">\';
        $result .= \'<div class="quote-content"><blockquote>\' . get_the_content() . \'</blockquote></div>\';
        $result .= \'<div class="quote-author"><p>\' . get_the_title() . \'</p></div>\';
        $result .= \'</div>\';
    }

    $result .= \'</div>\';
    $result .= \'</div>\';

    return $result;
}

结束

相关推荐

在中使用<?PHP ECHO get_num_queries();?>查询,我看到有7000多个查询?

我已经在几秒钟内完成了查询。在我的页脚中。php和我看到的约9秒内查询7000次,这是很多吗??在我的本地主机上我在3070秒内有195个查询。由于实时版本很慢,我想知道查询是否是原因?什么是监控/减少查询的最佳分步方式?如何检查触发查询的代码?当做