在同一div中仅包装两个帖子-WP While循环

时间:2019-01-05 18:40:30

标签: wordpress

我正在设置新的while循环,我想如何像下面的代码一样进行管理

<div class="item">
first post
</div>
<div class="col">
  <div class="item">
  second post
  </div>
  <div class="item">
  Third post
  </div>
</div>
<div class="item">
fourth post
</div>

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

并不困难,您需要像$ i这样的增量,以及像这样的if语句:

<?php
$i = 0; 
while( something ): 
if ( $i%2 == 0 ) { echo '<div class="col">'; }
?>
<div class="item">
some post
</div>
<?php
if ( $i%2 == 1 ) { echo '</div>'; }
$i++; endwhile; 
?>

以上代码将获取您的数据(帖子),如果两个代码中的第一个我将在其前面加上“ col”,如果两个代码中的第二个将关闭div。 我不确定那是否是您想要的,如果不告诉我:D

编辑: 当我查看您的样本时,我可以稍微编辑一下上面的代码以为您提供准确的结果作为样本,因此我们不必在“ col”中包含第一篇文章,因此我们需要做出包含第二篇文章并首先离开的声明:< / p>

if(i$%4 == 1) { echo '<div class="col">'; }

此后,我们要在第三篇文章后关闭“ col”,所以:

if ( $i%2 == 2 ) { echo '</div>'; }

所以:

  • $i = 0(第一个元素)时,我们什么也不做
  • $i = 1(第二个元素)时,我们使用类“ col”创建div
  • $i = 2(第三个元素)上,我们在打印帖子后关闭“ col”
  • $i = 3(第4个元素)时,我们什么也不做

我相信您现在可以看到校长:D 让我知道我是否可以提供更多帮助

因此最终代码(例如,以“ pure” php编写)应如下所示:

<?php
 if( have_posts ):
  $i = 0; 
   while( have_posts ): the_post;
    if ( $i%2 == 0 ) { echo '<div class="col">'; }
    echo '<div class="item"> some post </div>';
    if ( $i%2 == 1 ) { echo '</div>'; }
  $i++; endwhile; 
?>

这是我相信的版本可以解决您的问题:

<?php
     if( have_posts ):
      $i = 0; 
       while( have_posts ): the_post;
        if ( $i == 1 ) { echo '<div class="col">'; }
        echo '<div class="item"> some post </div>';
        if ( $i == 2 ) { echo '</div>'; }
      $i++; endwhile; 
    ?>

上面的代码将计算循环的迭代次数,并将第二和第三篇文章包装在“ col”中。