我需要一个div包每四个帖子在wordpress循环。所以就像
<div>
four posts
</div>
<div>
four posts
</div>我现在的代码是
<?php
$i = 0;
$wrap_div = "<div class='frak'>";
if ( have_posts() ) {
echo $wrap_div;
while ( have_posts() ) {
the_post();
?>
<div class="wine-section">
<?php the_post_thumbnail(); ?>
<div class="wine-info">
<a href="<?php the_permalink(); ?>"><?php the_title( '<h1>', '</h1>' ); ?></a>
<?php the_meta(); ?>
</div><!-- /wine-info -->
<div class="c"></div>
</div><!-- /wine-section -->
<?php
if ($i % 4 == 0) { echo "</div>" . $wrap_div; }
} // end while
} // end if
$i++;
?>这段代码分别封装了每个帖子。有什么想法吗?
发布于 2013-10-28 16:38:13
您在while循环之外递增while,因此在其中$i始终是==0,因此是$i % 4 == 0。
在$i++;之前移动} // end while。
但是,您还应该将条件更改为$i % 4 == 3,因为在第一次迭代($i=0)中,$i % 4 == 0的计算结果为true,并且只生成一个post的初始<div>。
或者,你也可以保持现状,并且:
$i=1而不是0开始$i++后面移动while。现在,当您有4个帖子的确切倍数时,最后将出现一个额外的空<div>。这是因为您假设,当一个<div>关闭时,另一个应该会自动打开。情况并不总是如此。
假设您已经选择了上面的$i % 4 == 3解决方案,并且在while循环之后已经有了一个echo '</div>';,那么将条件更改为if(($i % 4 == 3)&& have_posts())。
发布于 2013-10-28 17:03:47
正如风水所指出的,你在循环外增加变量。然后0 % 4 == 0计算为true --这是因为当你把0除以4,得到0。为了避免这种情况,你还需要一条规则。
另外,不要忘记,使用当前的代码,例如,如果总发帖量为12,那么在文章末尾将有一个空的"frak“div。
<?php
$i = 0;
$wrap_div = "<div class='frak'>";
if ( have_posts() ) {
// Grab the total posts that are being displayed
$total_posts = $wp_query->post_count;
echo $wrap_div;
while ( have_posts() ) {
the_post(); ?>
<div class="wine-section">
<?php the_post_thumbnail(); ?>
<div class="wine-info">
<a href="<?php the_permalink(); ?>"><?php the_title( '<h1>', '</h1>' ); ?></a>
<?php the_meta(); ?>
</div><!-- /wine-info -->
<div class="c"></div>
</div><!-- /wine-section -->
<?php
// Is this a fourth post? If so, make sure it is not the last post?
if ( $i % 4 == 0 && $i != 0 && ( $i + 1 ) != $total_posts ) {
echo '</div>' . $wrap_div;
}
$i ++;
} // end while
// Close the $wrap_div
echo '</div>';
} // end if
?>如您所见,打印结束标记和新包装的if语句现在更复杂了。它确保$i不是0(这意味着它仍然是第一个post),并且$i +1并不等于显示的帖子总数(在这种情况下,我们在while()循环之后关闭)。
如果您想知道为什么我们在while()循环之后关闭--仅仅是因为您的帖子在4上可能不一定完全是倍数(我不确定这里是否正确地翻译成英文)--如果是这种情况,并且在while循环之后没有关闭您的div --那么您就会有麻烦。
https://stackoverflow.com/questions/19640179
复制相似问题