はじめに
表示件数が1ページ目だけ異なるページネーションの実装をまとめました。
紹介した内容以外でもっと良い方法がありましたら教えてもらえると助かります!
解説
1ページ目に3件、2ページ目以降は10件ずつ表示する場合で解説していきます。
(件数は適当なので、各自好きな数字で調整してみて下さい)
ページの取得件数を設定
$post_per_page = $paged > 1 ? 10 : 3;
ページの取得件数を設定しています。1ページ目なら3、2ページ目以降なら10を設定します。
SQLのLIMIT句
に$post_per_page
を設定すれば、テーブルから取得するデータ件数を指定できます。
取得するデータの開始位置を設定
if ( $paged > 1 )
$add_args['offset'] = 3 + ( $paged - 2 ) * 10;
2ページ目以降は1ページ目の3件+1ページごとに10件読み飛ばします。
例:2ページ目は4件目から、3ページ目は14件目からデータを取得
ここでの$add_args['offset']
はOFFSET句
に指定することで、テーブル上でどの位置からデータを主とするのかを指定できます。
合計ページ数を計算
$comment_count = 20 //コメント総数
$max_page = ceil(($comment_count - 3) / 10) + 1
まず、表示件数の異なる1ページ目をコメント総数から引きます。
引いた結果、2ページ目以降で合計何ページあるか産出されます。
そして、最後に1ページ目を足しています。
参考
[WordPress] 1ページ目だけ表示件数が異なるページネーションの実装
取得するデータの数と開始位置を指定(LIMIT句, OFFSET句)