【WordPress】投稿一覧の表示数をfunctions.phpから制御する

管理者ページ側で投稿数を調整するのは億劫なのでfunctions.phpから投稿ページやカテゴリー一覧ページなどの投稿数を制御したい場合'pre_get_posts'アクションを利用します。このアクションフックを利用することで管理画面での投稿表示件数とメインページの投稿一覧の表示件数を分けたり一緒にすることも可能です。また、特定のカスタム投稿やカテゴリー一覧、検索結果などと細かく表示件数を制御することが可能です。

'pre_get_posts'アクションはデフォルトのメインループを変更することも可能なので詳しく知りたい方は調べてみる事をお勧めする。

表示数の制御

管理画面とメインページの表示件数の制御

function reset_pre_get_posts($query) {

	if ( is_admin() && $query->is_main_query()) {
		// 管理画面のすべての表示件数
		$query->set( 'posts_per_page', 5);
	}else{
		// メインページ上のすべての表示件数
		$query->set( 'posts_per_page', 1);
	}
}
add_action( 'pre_get_posts', 'reset_pre_get_posts' , 1);

もし細かく表示件数を設定したい場合下記の条件分岐を使用すると変更できる。

  • カテゴリー記事一覧ページ…is_category()
  • 検索結果ページ…is_search()
  • タグ記事一覧ページ…is_tag()

カスタム投稿の表示件数の制御

function reset_pre_get_posts($query) {
	if ( is_admin() && $query->is_main_query()) {
		// 管理画面のすべての表示件数
		$query->set( 'posts_per_page', 5);
	}elseif ( is_post_type_archive('sample_post') ) {
		// 特定のカスタム投稿ページ
		$query->set( 'posts_per_page', 2);
	}else{
		// メインページ上のすべての表示件数
		$query->set( 'posts_per_page', 1);
	}
}
add_action( 'pre_get_posts', 'reset_pre_get_posts' , 1);