1ページ目が15件、2ページ目以降が10件の場合。
$posts_per_page = $paged > 1 ? 10 : 15; parse_str ( $query_string, $org_args ); $add_args = array ( 'posts_per_page' => $posts_per_page ); if ( $paged > 1 ) $add_args['offset'] = 15 + ( $paged - 2 ) * 10; $args = array_merge ( $org_args, $add_args ); $wp_query = new WP_Query( $args ); $wp_query->max_num_pages = ceil ( ( $wp_query->found_posts - 5 ) / 10 ); if ( $wp_query->have_posts() ) { while ( $wp_query->have_posts() ) { $wp_query->the_post(); // ループ } wp_reset_postdata(); } the_posts_pagination();
順番に説明します。
まず、 posts_per_page を1ページ目なら15、2ページ目以降なら10に設定する。
$posts_per_page = $paged > 1 ? 10 : 15;
次に、オフセットを計算する。
2ページ目以降の場合は、1ページ目の15件+1ページごとに10件読み飛ばす。
if ( $paged > 1 ) $add_args['offset'] = 15 + ( $paged - 2 ) * 10;
最後に合計ページ数を再計算する。
記事数から1ページ目の余分な5件を引いて、10件で割ればいい。
$wp_query->max_num_pages = ceil ( ( $wp_query->found_posts - 5 ) / 10 );
まぁ滅多にないですけどね。
だからこそ困ったときの参考になれば。