首页 > 解决方案 > 仅在同一 div 中包装两个帖子 - WP While 循环

问题描述

我正在设置新的 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>

感谢您的帮助

标签: wordpress

解决方案


这并不难,你需要一些像 $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”中包含第一篇文章,因此我们需要做出包含第二篇文章并首先离开的声明:

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(第四个元素)我们什么都不做

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

所以最终代码(例如用“纯” 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”中。


推荐阅读