Control Loop Within Loop

时间:2013-07-16 作者:Juan Rangel

我试图控制一个循环中的一个循环。我想做的是显示所有帖子,并每3篇帖子插入一个自定义帖子类型。所以它会像这样“后CPT后CPT后CPT后CPT…”我是这样做的

global $loop_counter;
$loop_counter = 0;
if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
?>

// DO STUFF

<?php $loop_counter++; ?>

if ( $loop_counter%3 == 0 ) { 
    $args = array(
        \'post_type\' => \'testimony\',
    );
    $testimony = new WP_Query($args);
    if ( $testimony->have_posts() ) {
        while ( $testimony ->have_posts() ) {
            $testimony->the_post();
            ?>

            //LOOP WITHIN LOOP

        } } 
    } END loop count if
?>

我精简了一点代码,但这应该足够了。现在我想解决一个问题。只要主循环有POST,内部循环就会一直重复。我希望停止循环通过内部循环,只要我们没有帖子显示。任何帮助都将不胜感激。

1 个回复
SO网友:s_ha_dum

我想你更想要这样的东西:

$args = array(
  \'post_type\' => \'testimony\',
);
$testimony = new WP_Query($args);

if ( have_posts() ) {
  while ( have_posts() ) {
    the_post(); 
    if ( 0 !== $wp_query->current_post 
      && 0 === $wp_query->current_post%3 
      && $testimony->have_posts() 
    ) {
        $testimony->the_post();
        echo \'inner-loop\';
        the_title();
        echo \'inner-loop\';
        echo \'<br>\';
    }
    wp_reset_postdata();
    the_title(); 
    echo $wp_query->current_post;
    echo \'<br>\';
  }
}
您不需要循环计数器。有一个内置计数器WP_Query, 你不需要运行它$testimony 在外部循环的每次迭代中进行查询。

这个the_post 方法将循环增量为1,因此在每次迭代时,内部循环运行,echos内容并继续。

这里显然有一些调试代码。你可以编辑掉它,并根据需要替换它。

结束

相关推荐

页面不会使用LOOP或PRE_GET_POST显示在首页上

我改变了主题,以我认为“合适”的方式工作。在阅读了抄本并在这个网站上看到了一些东西之后。我从头开始。加载了2012主题。写了两页。主页和博客。我将主页设置为默认的2012年首页。php模板。然后在“设置->阅读”中,我将静态首页设置为主页,将贴子页面设置为博客。我知道这些帖子将从索引中删除。因此,在该文件中,我将自定义循环从博客类别和我的头版页面中拉出来。php文件我放置了一个自定义循环来获取页面。 $args = array( \'post_type\' => \'page\