在不中断循环的情况下查询循环

时间:2011-03-11 作者:Jeremy Love

我试图在我的类别中进行不同的查询,比如一个偏移量为post的查询和一个显示一个post的查询,但尽管它继续通过循环,这就是我所拥有的,但循环不断重复,我几乎认为我做得不对。有人知道怎么了吗?

<?php if (have_posts()) : $count = 0; ?>

                                <div id="featured-category">
                                <div class="heading"><h2 class="recent-post-title"><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_title(); ?></a></h2></div>
                                <?php query_posts(\'showpost=1\'); ?> 
                                <?php while (have_posts()) : the_post(); ?>
                                <div class="FC-image">
                                </div>
                                </div>
                                <?php endwhile ?>
                                <?php wp_reset_query(); ?>

                                <div id="recent-posts">
                                <!-- Post Starts -->
                                <div class="post">
                                <?php query_posts(\'showpost=4&offset=1\'); ?> 
                                <?php while (have_posts()) : the_post(); ?>                 
                                <div class="post-img">                  
                                </div>
                                <div class="heading"><h2 class="recent-post-title"><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_title(); ?></a></h2></div>
                                <div class="recent-post-content">
                                <?php get_the_excerpt_limit( 200, \'...&nbsp;Read More&nbsp;&raquo;\' ); ?>                   
                                </div><!-- /.heading -->                    
                                </div><!-- /.post -->
                                <?php endwhile ?>
                                <?php wp_reset_query(); ?>


                                <?php query_posts(\'offset=4\'); ?> 
                                <?php while (have_posts()) : the_post(); ?>
                                <div class="post">
                                <div class="heading"><h2 class="recent-post-title"><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_title(); ?></a></h2></div>
                                <div class="recent-post-content two">

                                <?php get_the_excerpt_limit( 200, \'...&nbsp;Read More&nbsp;&raquo;\' ); ?>                   

                                </div><!-- /.heading -->

                                </div><!-- /.post -->
                                <?php endwhile ?>
                                <?php wp_reset_query(); ?>        
                                <?php endwhile ?>

1 个回复
最合适的回答,由SO网友:scribu 整理而成

这是一种非常低效的方法。

只需使用您在顶部声明的$count变量,无需任何query\\u posts():

$count = 0;
while ( have_posts() ) : the_post();

if ( $count < 1 ) {
  // first post
} elseif ( $count <= 4 ) {
  // next 4 posts
} else {
  // rest of the posts
}

$count++;
endwhile;
此外,它是“展示柱”而不是“展示柱”。或者使用较新的“每页posts\\u”。

结束

相关推荐

如何在WordPress 3.1中将orderby与META_QUERY结合使用?

在使用meta\\u query对自定义帖子列表进行过滤后,是否可以根据我选择的元数据对其进行排序?例如,我有一个称为webinars的自定义帖子类型。我正在尝试列出所有即将举行的网络研讨会,并按名为webinar\\u startDate的自定义元字段进行排序。使用以下查询,我成功地返回了网络研讨会,排除了旧的网络研讨会。然而,它们仍然是按发布顺序发布的,而不是按网络研讨会开始日期发布的。<?php $my_array = array( \'meta_query\' =>