デイトラ(30DAYSトライアル)3rdの2ndステップでページネーションを動的に作成する部分でハマったので、その解決策をご紹介します。
結論としてはWordPress側のバグだと思われるので、僕と同じ状況でつまずいている方は気にせずに先に進んで良いです。
ページネーションとは
ページネーションとは記事が多くなってしまった場合に、ページを分割して読みやすくすることをいいます。
ページネーションがうまくいかなかった時の環境
僕がハマったページネーションは以下のような現象は以下のような状況で発生しました。
- WordPress 5.3.2(ローカル環境)
- テスト記事を1つ作成
- テスト記事をプラグイン「Duplicate Post 3.2.4」で5つに複製
- 設定-表示設定の「1ページに表示する最大投稿数」を1に変更
この状態でデイトラ(30DAYSトライアル)3rdの2ndステップの記載されているページネーションを動的にするコードを記述してみるとページネーションの動作に一部おかしいところが発生しました。
ページネーションがうまくいかなかった時の現象
ページネーションがうまくいかなかった時の現象は書きの通りです。
- 1ページ目 → 4記事目が表示
- 2ページ目 → 1記事目が表示
- 3ページ目 → 2記事目が表示
- 4ページ目 → 4記事目が表示
- 5ページ目 → 5記事目が表示
なぜか4ページ目が2回表示され、3記事目が表示されなくなりました。
この状態で設定-表示設定の「1ページに表示する最大投稿数」を5にするときちんと順番どおり1〜5記事目が表示されることを確認しました。
また、設定-表示設定の「1ページに表示する最大投稿数」を3にした場合も
- 1ページ目 → 1〜3記事目が表示
- 2ページ目 → 4〜5記事目が表示
という風に特に問題なく表示されることも確認しています。
ページネーションがうまくいかなかった時の原因と対処方法
原因については記事の投稿日が同じものが複数存在するとWordPressのthe_post()関数がうまく順番通りに記事を返せない場合があるということになります。
実際に僕はWordPressの管理画面から確認できる内容からしか検証していないので、「恐らく」としかいえません。
しかし、プラグイン「Duplicate Post 3.2.4」で複製した記事の投稿日が全て同じであったため、投稿日を1記事ずつズラしてみたら現象は解消されたので、the_post()関数になんらかの問題がある可能性が高いです。
まとめ
WordPressを使用していてページネーションがうまくいかない場合は、うまくいかない記事の「投稿日」を確認してみてください。
現実的な使用では登校日が全く同じになるというのは考えにくいので、現象は発生しにくいかと思いますが、プラグイン「Duplicate Post 3.2.4」で記事を複製してテストしあ場合などは発生しやすいので注意が必要です。