使滑块内的循环可拆分

时间:2021-05-19 作者:Anta

我试图划分一个帖子循环,以便在一个滑块内每个幻灯片显示4篇帖子。

下面的代码工作得很好,但由于Wordpress面板中的帖子数量是动态变化的,它会根据帖子总数中断并不会关闭最后一项。

有没有办法我可以设置某种计数器,这样无论总数是8、9、11、12。。。帖子?

  <!-- Slider -->
  <div class="slider">

      <?php $argsb = array(\'post_type\'=>\'post\', \'posts_per_page\' => -1, \'post_status\' => \'publish\');?>
      <?php  $blog = new WP_Query($argsb); if ( $blog->have_posts() ): ?>

      <!-- Slide -->
      <?php  while ( $blog->have_posts() ) : $blog->the_post(); $i++;?>
      <?php if( $blog->current_post % 4 == 0 ) echo "\\n".\'<div class="slide">\'."\\n"; ?>

          <h1><?php echo the_title(); ?></h1>

    <?php if( $blog->current_post % 4 == 3 ) echo \'</div>\'."\\n"; ?>
    <!-- end of slide -->

    <?php endwhile; wp_reset_postdata();?>

      <?php endif; ?>

  </div>
谢谢!

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

不幸的是,我没有正确理解你的问题,但我在这里只看到了两个可能的问题。您需要在此处使用:

$blog->current_post - 当前职位索引
$blog->post_count - 职位总数

如果需要用div包装每4篇文章,如果最后的文章少于4篇,请将其包装到。要实现这一点,需要在第二条if语句中添加另一个OR条件。检查当前帖子是否等于最后一篇帖子。

//before...
if( $blog->current_post % 4 == 3 )

//after...
if( $blog->current_post % 4 == 3 || $blog->current_post == $blog->post_count - 1)
如果您想将每4篇文章包装在一个div中,并;“离开”;剩下的部分,您可以添加另一个if语句,该语句应该在while循环启动之后首先执行。

//your while loop starts 
while ( $blog->have_posts() ) : $blog->the_post();

//break the loop if there are less than 4 posts left
if( $blog->current_post >= $blog->post_count - ($blog->post_count % 4)){
      break;
}