最初のデフォルトではなく、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 -->
私がやったことはこれです:
- query_posts() を使用して、すべてのスティッキー投稿をループから除外しました。
- ループを使用して投稿と、投稿がフェッチされるたびに増加するカウンターを取得しました。
- 取得した投稿を表示する div に、カウンターが特定の数値かどうかを確認する if ステートメントを追加し、そうであれば、query_posts を書き換えてスティッキー ポストを取得します。そうでない場合は、取得した投稿を表示します。
- その後、クエリをリセットすると、ループは (ほぼ) 正常に続行されます。
問題は、カウントが必要な値に達した後、最後の投稿から続行するのではなく、ループが最初から始まることです。
wp_reset_query() 関数を削除すると、スティッキー投稿が見つかったときにループが停止します。
すべての投稿を含めるようにクエリを書き直そうとすると、すでにループ内にいるため、無限ループが発生します。
ループを 2 つまたは 3 つに分割したくないので、誰かが 1 つのループを使用してこれを修正するのを手伝ってくれれば、それは素晴らしいことです!