そこで、専用のページ テンプレートを作成しました。このページには、最新の 3 つのブログ投稿を一覧表示し、ユーザーを前または次の 3 つの投稿に移動するための通常のページネーション リンクを使用します。
リストにデータが入力され、リンクが表示されていますが、前または次のリンクをクリックすると、以前と同じ 3 つの投稿が表示されます。URL の変更 (/blog/page/2) を確認できますが、表示される投稿は常に最新の 3 つです。
アップデート。非常にイライラした後、物事を基本に戻すことにしました。次のスニペットは、基本的にループを分離するためだけにテンプレートにあった唯一のコードであり、これはまだ修正されていません。取得できるのはページ上の単一の投稿だけですが、URL の最後に /page/2 を手動で入力すると、別の投稿が表示された 2 ページに移動します。ただし、ページネーションに関する唯一のリンクは「新しい投稿」です (2 ページ目にのみ表示されます)。「古い」投稿が表示されないのはなぜですか?
<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array(
'orderby' => 'post_date',
'order' => 'DESC',
'post_type' => 'post',
'post_status' => 'publish',
'posts_per_page' => 1,
'paged' => $paged,
);
$postslist = get_posts( $args );
foreach ($postslist as $post) : setup_postdata($post);
?>
<article>
<h2 class="fnt25 noBtmMarg"><a href="<?php echo get_permalink(); ?>" title="Read: <?php the_title(); ?>"><?php the_title(); ?></a></h2>
<div class="meta fnt18 pMarginBottom">Posted on: <?php the_date(); ?></div>
<div class="fnt22"><?php print_custom_field('listingDesc'); ?></div>
<a href="<?php echo get_permalink(); ?>" class="floatRight fnt22" title="Read the full article: <?php the_title(); ?>">Read more...</a>
<div class="clearfix"></div>
</article>
<?php endforeach; ?>
<div class="nav-previous alignleft"><?php next_posts_link( 'Older posts' ); ?></div>
<div class="nav-next alignright"><?php previous_posts_link( 'Newer posts' ); ?></div>