【WordPress】1ページ目と2ページ目以降の表示記事数を切り分ける

1ページ目は数件表示、2ページ目以降はたくさんの記事を表示したい

front-page.phpはサイトトップとして利用をしていて、/blog/ページをindex.phpで作成していたのですが、index.phpの中身を1ページ目は数件だけ紹介として表示し、2ページ目以降のまとまった数の記事を表示する、という事になった。

「!is_paged()」で切り分ければすぐにできるのかと思っていたのだが、スマートに行かないので悩んでいたら、下記ページにありましたのでメモさせていただきます。

条件分岐の部分、「!is_front_page」となっていますが、私はindex.phpで利用しているので「!is_home」にして利用させていただきました。

function.php
//1ページ目と2ページ目で表示する記事数を変える define('PAGE_1ST', 5); //1ページ目の記事数 define('PAGE_2ND', get_option( 'posts_per_page' )); //2ページ目の記事数 function change_posts_paging( $query ) { if ( is_admin() || !is_front_page() ){ return; //フロントページでのみ動作 } //現在のページを取得 $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); }else { //1ページ目の時 $query->set( 'posts_per_page', PAGE_1ST ); } } add_action( 'pre_get_posts', 'change_posts_paging' );   //next_pages_link()を正しく動かす function found_offset( $found_posts, $query ) {   $offset = PAGE_1ST;   if( !is_admin() && $query->is_main_query() ) { $found_posts = $found_posts + $offset; } return $found_posts; } add_action( 'found_posts', 'found_offset', 10, 2 );

【WordPress】フロントページと2ページ目以降で記事数を変更するとnext_posts_link()が正しく表示されなくなった話。

Yuki Nakata

中田デザイン事務所 代表。
WEBデザイナー(フリー)/ WEB講師(非常勤)/ 海外販売(法人)他

お仕事のご相談はお問い合わせフォームへお願いします。