本ブログでも使用しているWordPressテーマ「SANGO」であるが、SANGOで固定ページを使用せずにトップページのみ表示記事数を変更し、カテゴリページなどの表示記事数と連動しないようにする方法を紹介する。


SANGO公式インストラクションでは固定ページを使用してトップページの表示記事数を変更する方法が紹介されている。
ただ、サイトのデザインの整合性を保つのであれば固定ページを使用せず、本記事の方法で行った方が簡単でデザイン的にも見栄えがいいだろう。
なお、この方法は他の多くのテーマでも有効であると思われるが、ここではあくまで「SANGO」での方法を前提にしている。
functions.phpにコードを追加する

トップページのみ表示記事数を変更するには以下のコードをSANGOの子テーマの「テーマの関数(functions.php)」に記述する。
子テーマではなく親テーマに記述してもいいが、トラブルを避ける意味でも小テーマ(SANGO Child)に記述することを強くお勧めする。
function change_home_posts_per_page( $query ) {
// 管理画面、またはメインのループでない場合中断
if ( is_admin() || ! $query->is_main_query() ) {
return;
}
// トップページは表示件数を5件にする
if ( $query->is_home() ) {
$query->set( 'posts_per_page', 5 );
return;
}
}
add_action( 'pre_get_posts', 'change_home_posts_per_page' );

「トップページは表示件数を5件にする」の項目の「5」という数字を好きな数にすればトップページに表示される記事数を指定することができる。
SANGOの場合、トップページの表示は縦長カード型の場合2列なので2・4・8などといったように偶数を指定するといいだろう。
これでトップページはここで指定した記事数で表示され、カテゴリページなどの記事数はWordPressのダッシュボードの設定が適用される。
今回参考にさせて頂いたサイトは以下。
まとめ
SANGOの公式インストラクションにあるように固定ページを作った方が柔軟なカスタマイズが可能だが、HTMLやCSSの知識が必要な他、SANGOを複雑にカスタマイズしている場合は他の部分の表示とデザインが乖離してしまう可能性がある。
今回紹介した方法であればコードを追加するだけでトップページの記事数及びカテゴリページなどの記事数を個別に指定することが出来るので役立つだろう。