WP_QUERY循环内的WP_QUERY循环

时间:2015-12-29 作者:jjj

我试图在另一个循环中使用一个自定义WP\\U查询循环来显示来自内部循环的数据,独立于主循环。我发现this solution 但我真的不知道如何使用它。下面是代码,它可以工作,但主循环会生成重复的帖子。

<?php
// define the main query
$main_args = array(
    \'post_type\' => \'page\',
    \'post_parent\' => \'10\',
);
// execute the main query
$the_main_loop = new WP_Query($main_args);
// go main query
if($the_main_loop->have_posts()) : while($the_main_loop->have_posts()) : $the_main_loop->the_post(); 
?> 
    <p>This is the content from the main loop</p>

    <?php
    // define the inner query
    $inner_args = array(
        \'post_type\' => \'page\',
        \'post_parent\' => \'20\',
    );
    // execute the inner query
    $the_inner_loop = new WP_Query($inner_args);
    // go inner query
    if($the_inner_loop->have_posts()) : while($the_inner_loop->have_posts()) : $the_inner_loop->the_post(); 
    ?> 
        <p>This is the content from the inner loop</p>
    <?php 
    // end the inner loop, no reset
    endwhile; endif;
    ?> 

    <p>This is another content from the main loop</p>

<?php 
// end the main loop
endwhile; endif; wp_reset_postdata();
?>
谢谢!

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

现在还完全不清楚你到底想做什么,但根据这一点:

它可以工作,但主循环会生成重复的帖子

我可以告诉你,这是预期产出。

“main”循环查询并显示父页面ID为的所有页面10. 假设有10个页面与您的“主”查询匹配,这意味着您的循环将运行10个周期。将循环视为foreach 循环,因为它本质上就是这样(但不完全相同)。

现在,在每个周期中,您将添加另一个查询,该查询查询父ID为的页面20. 假设还有10个。因此,“main”循环的每个周期都将输出10篇文章,文章父级为20, 10次,因为有10个页面的父级为10.

非常基本,您有:

// First cycle 
the_post(); // 1st page with parent 10
    // custom query which will display pages from parent 20
// End of first cycle and start of second cycle
the_post();  // 2nd page with parent 10
    // custom query which will display pages from parent 20
// End of second cycle and start of third cycle
the_post();  // 3rd page with parent 10
    // custom query which will display pages from parent 20
etc etc
您应该将第二个查询放在“main”查询之外,以将它们分开

$main_args = [
    \'post_type\' => \'page\',
    \'post_parent\' => \'10\',
];
// execute the main query
$the_main_loop = new WP_Query($main_args);
// go main query
if($the_main_loop->have_posts()) { 
    while($the_main_loop->have_posts()) { 
    $the_main_loop->the_post(); 

        // Display your loop content

    } // endwhile
    wp_reset_postdata(); // VERY VERY IMPORTANT
}

// define the inner query
$inner_args = [
    \'post_type\' => \'page\',
    \'post_parent\' => \'20\',
];
// execute the inner query
$the_inner_loop = new WP_Query($inner_args);
// go inner query
if($the_inner_loop->have_posts()) {
    while($the_inner_loop->have_posts()) {
    $the_inner_loop->the_post();

        // Display your loop content

    } // endwhile
    wp_reset_postdata(); // VERY VERY IMPORTANT
}

相关推荐

Increase offset while looping

我正在编写一个自定义帖子插件,它将自定义帖子分组显示为选项卡。每组4个岗位。是否可以编写一个偏移量随每次循环而增加的查询?因此,结果将是:-第一个查询显示从1到4的帖子-第二个查询显示从5到8的帖子-第三个查询显示从9到12的帖子等。 <div class=\"official-matters-tabs\"> <?php $args = array(\'post_type\' => \'official-matters\', \'showp