1

我一直在尝试在第二个(或第三个等)位置而不是默认的第一个位置上显示单个粘性帖子。

我已经玩了几个小时的循环,但我总是遇到问题。

这是我到目前为止所做的:

  <!-- 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 -->

我所做的是这样的:

  1. 我使用 query_posts() 从循环中过滤掉所有粘性帖子。
  2. 使用循环来获取帖子和每次获取帖子时递增的计数器。
  3. 在显示获取的帖子的 div 上,我添加了一个 if 语句,它检查计数器是否是特定数字,如果是,它会重写 query_posts 并获取粘性的。如果没有,它会显示获取的帖子。
  4. 然后我重置查询,循环继续(几乎)。

问题是,在计数达到我想要的值后,循环不是从上一篇文章继续,而是从头开始。

如果我删除 wp_reset_query() 函数,则循环只会在找到粘性帖子时停止。

如果我尝试重写查询以包含所有帖子,我会得到无限循环,因为我已经在循环中。

我不想将循环分成两三个,所以如果有人可以使用一个循环帮助解决这个问题,那就太好了!

4

0 回答 0