你可以使用3个独立的循环,一旦你有足够的帖子,就可以尽早打破每个循环。
例如,下面是一个具有单个查询的2列网格:
$q = new WP_Query( ... );
if ( $q->have_posts() ) {
?>
<div class="columns">
<div>
<?php
$counter = 0;
while( $q->have_posts() ) {
$q->the_post();
the_title();
$counter++;
if ( $counter === $q->post_count/2 ) {
break;
}
}
?>
</div>
<div>
<?php
$counter = 0;
while( $q->have_posts() ) {
$q->the_post();
the_title();
$counter++;
if ( $counter === $q->post_count/2 ) {
break;
}
}
?>
</div>
</div>
<?php
} else {
echo \'No posts found\';
}
注意到我是如何在显示每个帖子时进行计数的,然后在计数器运行到一半时提前退出循环的吗?
任意列请注意,这里的列都是相同的设计,并且条件检查已更改。
$q = new WP_Query( ... );
if ( $q->have_posts() ) {
?>
<div class="columns">
<?php
$columns = 2;
for ( $i = 1; $i < $columns; $i++ ) {
echo \'<div>\';
$counter = 0;
while ( $q->have_posts() ) {
$q->the_post();
get_template_part( \'column\',\'post\' );
$counter++;
if ( $counter > $q->post_count/$columns ) {
break;
}
}
echo \'</div>\';
}
?>
</div>
<?php
} else {
echo \'No posts found\';
}
请注意
get_template_part
调用,简化模板。
通过这两个示例和一些基本数学知识,您可以将它们转换为任意列的组合
或者,将一行帖子向左浮动,使每个帖子的宽度为50%或固定宽度,使用CSS完全避免PHP