1

最初のデフォルトではなく、2番目(または3番目など)の位置に単一のスティッキー投稿を表示しようとしました。

何時間もループで遊んでいますが、いつも問題に遭遇します。

これが私がこれまでに行ったことです:

  <!-- 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() 関数を削除すると、スティッキー投稿が見つかったときにループが停止します。

すべての投稿を含めるようにクエリを書き直そうとすると、すでにループ内にいるため、無限ループが発生します。

ループを 2 つまたは 3 つに分割したくないので、誰かが 1 つのループを使用してこれを修正するのを手伝ってくれれば、それは素晴らしいことです!

4

0 に答える 0