正确答案:
感谢代码宇宙
$i=0;
<?php while(have_posts()):the_post();?>
if ($i % 5 == 0) {
echo '<div class="box">';
}
echo '<div class="post">...</div>';
if ($i % 5 == 4) {
echo '</div>';
}
$i++;
<?php endwhile;wp_reset_query(); ?>
if ($i % 5 != 0) {
echo '</div>';
}
原文内容:
注意,这是一个细思极恐的问题,请仔细阅题!
首先,有一个不能改变的条件,就是循环输出内容的代码,例如
<?php while(have_posts()):the_post();?>
//此处将循环输出多篇文章
<?php endwhile;wp_reset_query(); ?>
我需要输出的HTML格式如下
<div id="content">
<div class="box">
<div class="post">...</div>
<div class="post">...</div>
<div class="post">...</div>
<div class="post">...</div>
<div class="post">...</div>
//一共五篇,也就是5个POST
</div>
<div class="box">
<div class="post">...</div>
<div class="post">...</div>
<div class="post">...</div>
<div class="post">...</div>
<div class="post">...</div>
</div>
<div class="box">
<div class="post">...</div>
<div class="post">...</div>
<div class="post">...</div>
<div class="post">...</div>
<div class="post">...</div>
</div>
</div>
条件:
文章数量不确定,一定>5
每隔5篇文章,需要使用一个Box的div包裹(难点在此,第一次输出<div class="box">,第五次输出</div>)
你不可以把每5个post存一下其他地方,然后最后一起输出!
一个栗子?:
假设我有11篇文章,那么我的html最终格式应该是
<div id="content">
<div class="box">
<div class="post">...</div>
<div class="post">...</div>
<div class="post">...</div>
<div class="post">...</div>
<div class="post">...</div>
</div>
<div class="box">
<div class="post">...</div>
<div class="post">...</div>
<div class="post">...</div>
<div class="post">...</div>
<div class="post">...</div>
</div>
<div class="box">
<div class="post">...</div>
</div>
</div>
这时候我的PHP代码应该是怎么样的呢?
我的尝试:
<div id="content">
<?php while(have_posts()):the_post();$i++;?>
<?php if($qp_i == 1 || $qp_i == 6 || $qp_i == 11 || $qp_i == 16){echo '<div class="box">';$qp_a++;} ?>
...post
<?php if($qp_i == 5 || $qp_i == 10 || $qp_i == 15 || $qp_i == 20){echo '</div>';} ?>
<?php endwhile;wp_reset_query(); ?>
</div>
这个方式的弊端是只能是IF里面规定的数值外,还必须是可以整除的文章数量。
可能你想到了用$i++ 之类的判断5次后输出,之类的,但是请注意,第一次循环需要echo出 <div class="box"> 这个标签的闭合需要在第五次输出后加上,也就是echo一个</div>。
提要:
关于周神的回答
= =!!! 这不是很简单吗... 有毛难度啊
$postCount=0; //文章计数
echo '<div class="box">';
<?php while(have_posts()):the_post();?>
//此处将循环输出多篇文章
$postCount++;
if( $postCount > 1 && $postCount% 5 == 1 ){
echo '</div><div class="box">';
}else{
echo '<div class="post">...</div>';
}
<?php endwhile;wp_reset_query(); ?>
echo '</div>';
结果:
第一个5个,第二三个4个,剩下空白
参考:
<?php
$a == 0;
echo '<div class="box">';
?>
<?php
for ($i = 0; $i < 16; $i++) {
$a++;
if ($a > 1 && $a % 5 == 1) {
echo '</div><div class="box">';
} else {
echo '<div class="post">内容</div>';
}
}
?>
<?php
echo '<div>';
?>