代码如下:
<?php get_template_part( \'pagination\', \'bbp_replies\' ); ?>
<?php query_posts(\'gdsr_sort=thumbs&post_type=bbp_reply&posts_per_page=2\'); ?>
<?php while ( have_posts() ) : the_post(); ?>
<h2><?php the_title(); ?></h2>
<?php the_content(); ?>
<?php endwhile; ?>
<?php wp_reset_query(); ?>
<?php while ( bbp_replies() ) : bbp_the_reply(); ?>
<div class="topic-entry">
<div class="topic-author">
<?php bbp_reply_author_link( array( \'type\' => \'avatar\' ) ); ?>
<?php bbp_reply_author_link( array( \'type\' => \'name\' ) ); ?>
<?php printf( __( \'%1$s\', \'bbpress\' ), get_the_date() ); ?>
</div>
<div class="topic-content">
<?php bbp_reply_content(); ?>
<span class="like-counter"><?php DisplayVotes(get_the_ID()); ?></span>
</div>
<?php bbp_reply_admin_links(); ?>
</div>
第一个
query_posts
循环列出2个投票最多的回复。第二个bbPress循环按DESC顺序列出所有其他回复。
如果在同一个文件模板中有这两个循环,我会遇到bug吗?
最合适的回答,由SO网友:Jan Fabry 整理而成
我不会这样做,但这不应该是个问题。执行模板文件时,“真正的主循环”已经包含此页面的帖子。然后执行query_posts()
要执行第二个查询,该查询“隐藏”了“真实”循环,但在完成后,执行wp_reset_query()
这使得“真实”循环再次成为活动循环。
如果您嵌入这两个循环,那么如果您执行另一个循环,就会变得混乱并导致错误query_posts()
在那主要where
环那么你必须使用get_posts()
or a direct WP_Query
以防止错误。
就我个人而言,我从不打电话query_posts()
我自己,并始终使用get_posts()
, 因为它“在我背后”不会改变任何全局变量。