我一直在尝试在第二个(或第三个等)位置而不是默认的第一个位置上显示单个粘性帖子。
我已经玩了几个小时的循环,但我总是遇到问题。
这是我到目前为止所做的:
<!-- Wordpress Main Loop Start -->
<?php query_posts(array("post__not_in" =>get_option("sticky_posts"))); ?>
<?php if ( have_posts() ) : $loop_count = 0; while ( have_posts() ) : the_post(); $loop_count++; ?>
<div <?php post_class(); ?>>
<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
<div class="byline postinfo">by <?php the_author_posts_link(); ?></div>
<div class="postdate postinfo"><?php the_time('l F d, Y'); ?></div>
<div class="commentscounter postinfo"><a href="<?php comments_link(); ?>"><?php comments_number('0', '1', '%'); ?></a></div>
<?php
if ($loop_count == 2) :
$sticky = get_option( 'sticky_posts' );
query_posts( 'p=' . $sticky[0] );
wp_reset_query();
else:
the_excerpt('Read More...');
endif;
?>
</div>
<?php endwhile; else: ?>
<p><?php _e('No posts were found. Sorry!'); ?></p>
<?php endif; ?>
<div class="navi">
<div class="right">
<?php previous_posts_link('Previous'); ?> / <?php next_posts_link('Next'); ?>
</div>
</div>
<!-- Wordpress Main Loop End -->
我所做的是这样的:
- 我使用 query_posts() 从循环中过滤掉所有粘性帖子。
- 使用循环来获取帖子和每次获取帖子时递增的计数器。
- 在显示获取的帖子的 div 上,我添加了一个 if 语句,它检查计数器是否是特定数字,如果是,它会重写 query_posts 并获取粘性的。如果没有,它会显示获取的帖子。
- 然后我重置查询,循环继续(几乎)。
问题是,在计数达到我想要的值后,循环不是从上一篇文章继续,而是从头开始。
如果我删除 wp_reset_query() 函数,则循环只会在找到粘性帖子时停止。
如果我尝试重写查询以包含所有帖子,我会得到无限循环,因为我已经在循环中。
我不想将循环分成两三个,所以如果有人可以使用一个循环帮助解决这个问题,那就太好了!