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 );
まぁ滅多にないですけどね。
だからこそ困ったときの参考になれば。


