我想在两个div中的类别中显示我的wordpress帖子。例如:
<ul id="left">
<li class="post">POST 1</li>
<li class="post">POST 3</li>
<li class="post">POST 5</li>
<li class="post">POST 7</li>
</ul>
<ul id="right">
<li class="post">POST 2</li>
<li class="post">POST 4</li>
<li class="post">POST 6</li>
<li class="post">POST 8</li>
</ul>
所以我想要做的就是告诉query_posts以某种方式开始奇怪地吐出前4个帖子然后均匀地为每个div吐出。我不想有两个单独的WP_Queries,因为这是一个category.php文件,需要有默认循环。不太清楚如何做到这一点。
任何帮助都非常感激。
答案 0 :(得分:2)
我之前没有测试过,这不是最好的方法,而是解决方案
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
<?php
$count++;
if( $count % 2 ) {
$left_array[] = array( 'content' => get_the_content('more...') );
}
else {
$right_array[] = array( 'content' => get_the_content('more...') );
}
?>
<?php endwhile; ?>
<ul id="left">
<?php
foreach( $left_array as $post ) {
echo '<li class="post">'.$post['content'].'</li>';
}
?>
</ul>
<ul id="right">
<?php
foreach( $right_array as $post ) {
echo '<li class="post">'.$post['content'].'</li>';
}
?>
</ul>
<?php else : ?>
<?php endif; ?>
或相同的想法,但另一种方式:
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
<ul id="left">
<?php
$count++;
if( $count % 2 ) {
}
else {
?>
<li class="post"><?php the_content('more...'); ?></li>
<?php
}
?>
</ul>
<ul id="right">
<?php
$count++;
if( $count % 2 ) {
?>
<li class="post"><?php the_content('more...'); ?></li>
<?php
}
?>
</ul>
<?php endwhile; ?>
<?php else : ?>
<?php endif; ?>
答案 1 :(得分:1)
如何预构建两个列表:(我不记得WP查询语法,所以它是伪PHP:)
<?php
$list1 = array();
$list2 = array();
$i=0;
foreach($query_results as $res) {
if(($i++)&1) $list2[] = $res;
else $list1[] = $res;
}
?>
现在list1包含第一个,第三个......项目,list2包含第二个,第四个...... 然后,您可以根据需要在两个div中打印它们。
(在一个切线上:PHP有没有简洁的方法来执行上面的代码呢?Python有逐步切片语法......)
答案 2 :(得分:0)
如果你的目标是有一个两列的帖子列表,那么在一个列表中输出帖子会更容易,然后使用CSS来使用float给出两列的视觉外观,例如: / p>
width: 50%;
float: left;