2016.01.17
WEB制作
[WordPress] 一覧の表示件数を1ページ目と2ページ目以降で変更
StoraipのPCサイトのブログ一覧で実現させているのですが、
1ページ目だけ見せ方を変えることで、表示件数が1ページ目と2ページ目以降で変わるときの対処法です。
具体的にはfunctions.phpに以下を記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
define('PAGE_1ST', 10); // 1ページ目の件数 define('PAGE_2ND', 9); // 2ページ目の件数 function change_posts_paging($query) { // 管理画面やメインクエリーでない場合は除外 if ( is_admin() || ! $query->is_main_query() ) return; // ブログカテゴリの場合のみ適用 if ( $query->is_category('3') ) { $query->set( 'posts_per_page', PAGE_1ST); //1ページ目に表示する記事数 } $paged = get_query_var( 'paged' ) ? intval( get_query_var( 'paged' ) ) : 1; if ($paged >= 2){ // 2ページ目以降の場合 $query->set('offset', PAGE_1ST + PAGE_2ND*($paged-2) ); $query->set('posts_per_page', PAGE_2ND); // 2ページ以降に表示させたい記事数 }} add_action( 'pre_get_posts', 'change_posts_paging' ); |
上記は1ページ目に10件、2ページ以降は9件にする場合です。
7行目はブログカテゴリのみで適用するためにカテゴリIDを指定しています。
ここは投稿タイプなどの指定にも変更可能です。
12行目はページ件数を変えるとページングの制御がおかしくなるため、
オフセットに表示させる記事の順番を設定しています。
最初に参考にしていたサイトではこのオフセットがなかったために、
1ページ目の最後と2ページ目の最初に同じ記事が表示されてしまい、
ちょっと手こずりました。
参考サイト
http://ounziw.com/2014/07/11/wordpress-pre_get_posts/
こんにちは!1ページ目と2ページ目以降で記事一覧に表示する件数を変えたくて、この記事にたどり着きました。
上記を参考にして、表示することはできたのですが、カテゴリページやタグのページの1ページ目も1件多くなってしまいます。
トップページの1ページ目だけ、記事一覧に表示する件数を一つ多くするには、どのようにすればいいでしょうか。
お手数ですが、お回答いただけたら幸いです。よろしくお願いします。
よーた様
コメントありがとうございます。返答遅くなりまして申し訳ございません。
トップページだけということであれば、is_homeを使用していただけるとよいと思います。
7行目の部分を下記のようにします。
if ( $query->is_home() ) {
実際に試したわけではないので、もしうまくいかないようであればまたお知らせください。
よろしくお願いいたします。