WordPressで1ページに表示する投稿数は、ダッシュボード>表示設定で設定します。
この設定は、複数記事を表示する全てのページ(フロントページやアーカイブページなど)に反映されます。
特定のページでのみ、設定値以外の表示数にしたい場合には、functions.phpにコードを追加します。
特定のページで表示数を変えるコード
例えば、フロントページ(ホーム)のみ、記事を3件表示したいという場合は、functions.phpに以下のようなコードを追加します。
1 2 3 4 5 6 7 8 |
add_action( 'pre_get_posts', 'custom_query_pre_get_posts' ); function custom_query_pre_get_posts( $query ) { if ( !is_admin() && $query->is_main_query() ) { if ( is_front_page() ) { $query->set( 'posts_per_page', 3 ); } } } |
コードについて、順を追って解説して行きます。
まず、pre_get_posts
というアクションフックを使って、表示件数を操作します。
1 2 |
add_action( 'pre_get_posts', 'custom_query_pre_get_posts' ); function custom_query_pre_get_posts( $query ) { |
アクションフックpre_get_posts
は、管理画面の投稿一覧や、get_posts
を用いたサブループにも適用されてしまうので、if文を用いてメインクエリ・ループのみに適用されるようにします。
3 |
if ( !is_admin() && $query->is_main_query() ) { |
フロントページでのみ、表示件数を変更します。
4 |
if ( is_front_page() ) { |
'posts_per_page'
の値を3に設定します。
5 |
$query->set( 'posts_per_page', 3 ); |
このアクションフックを使った方法は、表示件数以外にも様々な値を操作できます。
記事: 記事の絞り込みや並び替えを行う
これよりも簡単で、幅広く知られている方法に、テンプレート内でquery_posts
関数を使う方法がありますが、そちらではページングの不具合などもあるので、ここで紹介したアクションフックを使った方法をおすすめします。