これはコードです:
<?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つの返信をリストします。 2番目のbbPressループは、他のすべての応答をDESC順にリストします。
同じファイルテンプレートにこの2つのループがあると、バグが発生しますか?
私はこのようにしないでください、しかしそれは問題になるべきではありません。あなたのテンプレートファイルが実行されるとき、「本当のメインループ」はすでにこのページの投稿を含んでいます。次にquery_posts()
を実行して2番目のクエリを実行します。これにより、「実際の」ループが「隠されます」が、終了した後でwp_reset_query()
を実行すると「実際の」ループが再びアクティブなループになります。
2つのループをembedにすると、混乱してエラーが発生します。したがって、そのメインのwhere
ループで別のquery_posts()
を実行した場合はエラーになります。それから、エラーを防ぐために get_posts()
または直接WP_Query
を使わなければなりません。
個人的には、私は自分自身をquery_posts()
と呼ぶことはなく、常にget_posts()
を使用します。なぜなら、それは「背後で」グローバル変数を変更しないからです。