ぶろくまん3

タメグチは世界を救う! プログレハードポップ系ソロアーティスト、みろく卍游楼 me-rockman-Jeuro によるタメ口ブログ

1ページに表示する最大投稿数を設定する posts_per_page の罠

毎日ハマりっぱなしのろくまんです。

WordPressで、投稿の一覧をトップページや archive.php 等で表示させる時。
例えば投稿が100万件あったらそれを1ページに全部ダーーーーーーーっとリスト表示させると迷惑千万。はてどうしたものか。そんなときに使うのが posts_per_page だ。
いやいや、うちのサイトは投稿数10件くらいでいっこうに増えませんねん、、て場合は関係ない話。

基本的には下記のようにすればいいだけ。

<?php query_posts('posts_per_page=20'); ?>
<?php while (have_posts()) : the_post(); ?>
  // 投稿のループ
<?php endwhile;?>

posts_per_page=20 の部分がミソだな。1ページあたり20件の投稿を表示するという設定だ。

問題はここから。

投稿が100万件なかったとしてもこの場合21件以上あればページネーション機能が必要になる。
ページネーションとは、Googleでいうとこれだ。

f:id:rockmanalive:20210607141550p:plain
Google検索のページネーション

この機能を実現するには the_posts_pagination() というWordPress関数を使うのだが。。。。
これがうまく機能しないのだ。

f:id:rockmanalive:20210607143138p:plain
とあるサイトのページネーション

このサイトは製作中につき投稿が3件仮登録されている。そう、3件しか投稿がないのだ。なのになんでページネーションが表示されてるの??しかも3ページもあることになっている(@_@;)
もちろん posts_per_page=20 としている。

ちなみにこのページネーションの1・2・3・次へのどれをクリックしても再読込して同じページが表示される(笑)
青色のフォーカスは変わるよ。そう、HTMLではちゃんとアクティブなタグが切り替わって内部的には正常に動作している。

結論を言ってしまうと、WordPressの管理画面で、
[設定]―[表示設定]の[1ページに表示する最大投稿数]が posts_per_page の設定より小さければ発生する。

f:id:rockmanalive:20210607144351p:plain
WordPress管理画面

ふ〜ん、、では設定を逆に、つまりここを20件にして posts_per_page=1 とすればどうなるのか。

f:id:rockmanalive:20210607145108p:plain
設定を逆にしたとあるサイトのページネーション

投稿が3件あるのに1件しか表示されなくて、且つページネーションの表示もない。

どうせいっちゅうねんヽ(`Д´)ノ

色々とググってみたが、、明確な回答は得られなかった。。俺の脳がついて行ってないのかも知れない。というかそれならむしろありがたい。解決法はあるということだからな。俺が分からないだけで(´;ω;`)

現状は、[1ページに表示する最大投稿数]一択で、同じサイト内での投稿一覧は全部この設定しかできない。あっちのページは10件表示でこっちのページは20件表示、、、なんてことは出来ない。。。

ホンマかそれ