WordPress查询帖子分为两个Div

时间:2010-03-28 12:02:33

标签: wordpress

我想在两个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文件,需要有默认循环。不太清楚如何做到这一点。

任何帮助都非常感激。

3 个答案:

答案 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;