一覧ページで表示させる投稿数を変更する方法 【WordPress】

更新2023/03/21

WordPressの初期設定では1ページに表示される投稿の最大数が決まっています。その数を増やしたい、減らしたいと思った時に使える設定方法のメモです。

管理画面の表示設定から変更

基本となる表示件数を変更したい場合は、管理メニューの「表示設定」画面にある「1ページに表示する最大投稿数」の項目から変更できます。
デフォルトでは10件となっているので、この数字を表示させたい数に変更します。

特定のページのみ変更したい場合

上記の設定は簡単に設定が行えますが、全てのアーカイブページに適用されます。そうではなく、特定のページのみ表示件数を変更したい場合は、別の方法を使用します。

pre_get_posts で最大表示件数を設定する

特定のページのみ変更したい場合は、pre_get_posts を使います。functions.php に以下のようなコードを追記すれば変更できます。

function my_preget_posts($query) {
  if (is_admin() || ! $query->is_main_query()){
    return;
  }
  if ($query->is_home()) {
     $query->set('posts_per_page', 3);
     // $query->set('posts_per_page', 設定したい最大表示件数)
     return;
  }
}
add_action('pre_get_posts', 'my_preget_posts');

上記のコードはTOPページで表示させる最大投稿件数を設定しています。
カテゴリー・タグページなら is_home() の部分を is_category()is_tag() に変更すればOK。

カスタム投稿タイプの一覧なら以下のような形。

if ($query->is_post_type_archive('post_type_name')) {
   $query->set('posts_per_page', 3);
}

その他のページでも、該当する条件分岐タグを使用して設定できます。

pre_get_posts の詳細な使い方はこちら

この投稿の表示数の変更について調べていると query_posts() を使った方法も結構ありましたが、このコードはWordPressで非推奨のコードになっているのでおすすめしません。

【関連記事】query_posts はNG。 非推奨コードは使わない

ぜひ pre_get_posts を使用してください。

PCとSPで表示数を変更する

ページごとではなく、表示させるデバイスによって件数を変化させたいこともあると思います。
その場合でも pre_get_posts で設定できます。

is_mobile() を追加すると「モバイルの場合」という条件が追加され、スマホ表示の設定ができます。

function my_preget_posts($query) {
  if (is_admin() && is_mobile() && $query->is_main_query()){
    $query->set('posts_per_page', 6);
  }
}
add_action('pre_get_posts', 'my_preget_posts');

サブループならループ設定の際に記述

メインループは自動的に取得した情報を表示させるために使用しますが、サブループは自分で設定したデータを取得・出力するものです。

この場合の最大表示数は、wp_query()get_posts() などで取得する際に設定します。

【関連記事】サブループで任意の投稿一覧を表示

最大投稿数の設定が反映されない

数字を設定したにも関わらず、設定通りに表示されない場合はどこかのファイルに制御している記述があるかもしれません。

うまく反映されない場合はテーマファルのPHPコードを確認してみてください。
posts_per_pagepre_get_posts と言ったコードを検索して、表示件数を設定している箇所があるかチェックしてみましょう。

カテゴリー : WordPress

TOPへ