トップページだけ、表示件数を変える方法

ども、たきたきでっす。

1ページあたりの表示件数を変えるには、管理画面の設定→表示設定の1ページに表示する最大投稿数を変更すればできるのですが、

ここを変えると、全てのページに反映されてしまうんですよね。 トップページは3投稿でそれ以外は10投稿みたいに変更したいので色々と調べて見ました。

functions.phpにアクションを追加することによってページの表示数を制御可能!

ということで、functions.phpに以下の記述をします。

// トップページだけ取得件数を変える(3件)
add_action( 'pre_get_posts', 'change_posts_per_page' );
function change_posts_per_page($query) {
    if ( is_admin() || ! $query->is_main_query()) {
        return;
    }
    if ( $query->is_home() ) {
        $query->set( 'posts_per_page', '3' );
    }
}

add_action( ‘pre_get_posts’, ‘change_posts_per_page’ ); という部分は、『記事データを取得する前(pre_get_posts)にchange_posts_per_pageというメソッドを呼び出す』という意味とのこと。

んで、change_posts_per_pageメソッド内では、記事を呼び出すクエリを書き換えていて、トップページの場合は1ページの表示件数(posts_per_page)を管理画面で設定している件数ではなく、3件に変更しています($query->set( ‘posts_per_page’, ‘3’ );という部分が上書きをしているところ)

トップページ以外では上書きはしないので、管理画面で設定している値をそのまま利用します。 これで、トップページは件数を減らして、それ以外のページでは沢山表示させることができました!

参考にしたサイト

https://qiita.com/_ruka_/items/e14280d34eddf49efad1
pre_get_postsに関してはこちらを参考にしました。

コメント

タイトルとURLをコピーしました