【WordPress】2ページ目に行くと記事が重複して、表示されない投稿がある(ページ送り / ページネーション)

▼毎日をちょっと楽しく過ごす

2ページ目へページを移動すると、1ページ目の一番最後の投稿が、また2ページ目の上に表示されてしまう、ということがありました。

トータルの投稿数は合っていますが、1つの投稿だけ重複して表示されています。

記事が重複した原因

原因は、記事のソート順でした。

丁度、次のページに切り替わる投稿が同じ投稿日、投稿時間だったために起こった問題でした。

記事取得をする際のデフォルトの順序は「date(投稿日)」の「DESC(降順)」です。

明示的に指定しない場合、単に新しい投稿日が初めに表示されます。

投稿日が同じ場合のソート順

さて、明示的にソート順を指定しない場合、投稿日が全く同じ投稿はどのような順番になるでしょうか。

投稿日が一緒の場合は、次にIDを降順で取得しているようです。

その為、1ページ目で10件取得した場合、10件目にIDが古いほうが表示され、

2ページ目に10件取得した際は、上の11件目でもIDが古い方が表示されるということが起こりました。

日付が被りそうな時は、ソート順を明示的に指定する

あまり日付が同じ投稿というのは少ないかもしれませんが、そういった場合を考えて、ソート順を明示的に指定するのが良さそうです。

$args = [
    "paged" => $paged,
    'posts_per_page' => 10,
    'orderby' => ['date' => 'DESC', 'ID' => 'ASC'],
];

「orderby」に、「date」「ID」の順番でソートするように指定します。

IDは降順である「DESC」でも問題ないと思います。たぶん。

この記事はあなたの役に立ちましたか?