如何在档案页面中拆分多列循环

时间:2011-10-23 作者:user8503

嗨,我从一篇帖子中得到了这段代码,我想将循环拆分为4列

这是存档页

我想限制第一栏1篇文章第二栏1篇文章第三栏4篇文章第四栏5篇文章

看,我想这样做http://demos.gabfirethemes.com/wp-newspaper/category/finance/存档页面中有3列

请引导我--

下面是代码

<div class="First-column">
<?php while(have_posts()) : ?>
<?php
$postcount++;
if( ($postcount % 2) == 0 ) : // skip \'even\' posts
$wp_query->next_post();
else :
?>
<?php the_post(); ?>

<a href="<?php the_permalink(); ?>">
<h4><?php the_title(); ?></h4></a>   

<?php endif; ?>
<?php endwhile; ?>
</div>

<?php $postcount = 0; rewind_posts(); ?>

<div class="Second-column">
<?php while(have_posts()) : ?>
<?php
$postcount++;
if( ($postcount % 2) != 0 ) : // skip \'odd\' posts
$wp_query->next_post();
else :
?>
<?php the_post(); ?>

 <a href="<?php the_permalink(); ?>">
  <h4><?php the_title(); ?></h4></a>   

<?php endif; ?>
<?php endwhile; ?>
</div>

<?php $postcount = 0; rewind_posts(); ?>

<div class="third-column">
<?php while(have_posts()) : ?>
<?php
$postcount++;
if( ($postcount % 2) != 0 ) : // skip \'odd\' posts
$wp_query->next_post();
else :
?>
<?php the_post(); ?>

<a href="<?php the_permalink(); ?>">
<h4><?php the_title(); ?></h4></a>   

<?php endif; ?>
<?php endwhile; ?>
</div>

<?php $postcount = 0; rewind_posts(); ?>

<div class="fourth-column">
<?php while(have_posts()) : ?>
<?php
$postcount++;
if( ($postcount % 2) != 0 ) : // skip \'odd\' posts
$wp_query->next_post();
else :
?>
<?php the_post(); ?>

 <a href="<?php the_permalink(); ?>">
  <h4><?php the_title(); ?></h4></a>   

<?php endif; ?>
<?php endwhile; ?>
</div>

1 个回复
SO网友:Stephen Harris

这比我想象的要困难得多。似乎有多个while 如果WordPress耗尽了所有的帖子,那么循环会让它感到困惑。特别是,如果while 循环到达帖子的末尾,下一个while 循环从头开始,导致显示重复项。

要绕过这个问题,我们可以使用a(不是很优雅)do_not_duplicate 数组来跟踪我们已经显示的帖子。

以下是我的解决方案。我使用了我看到的一个技巧(使用foreach) 使其能够灵活地创建更多列/更改每列中的帖子数量。我希望这些评论能解释一切。。。

        <?php if ( have_posts() ) : ?>
            <?php
                //Can have as many loops as we like - set how many to appear in each loop.
               //In this example, 4 columns of length 1, 1, 4 and 5 posts respectively.
                $post_counts = array(1, 1,4, 5);
                foreach ($post_counts as $iteration => $max_count) {
                    $count = $max_count;  
                    /* Give our column specific id/class for styling */?>
                    <div id="column-<?php echo $iteration+1; ?> ">
                    //Loop inside the column
                    <?php while ( have_posts() and $count-- ) :
                            the_post(); 
                        /* Check if post has already been shown */
                        if (in_array($post->ID, $do_not_duplicate)) continue;
                            /* If not, add it to our do_not_duplicate array and show it */
                            $do_not_duplicate[] = $post->ID; ?>
                             <a href="<?php the_permalink() ?>" title="" ><?php the_title(); ?></a> </br>
                    <?php endwhile; ?>
                    </div>
            <?php }?>
        <?php else : ?>
            <p>No posts</p>
        <?php endif; ?>
这很管用,但一定有更整洁的方式。。。?

结束

相关推荐

在users.php中使用Manage_User_Columns显示cimy用户字段

我正在尝试向我的主题函数添加代码。php在仪表板用户中显示使用Cimy用户额外字段插件创建的字段。php。我知道我需要使用manage\\u users\\u列,但除此之外,我陷入了困境。有谁对这个插件足够熟悉,可以帮助我获得要显示的正确字段?