WordPress pre_get_posts() 関連

<?php
//メインループを変更する場合。query_postは非推奨。pre_get_postsを使う。functions.phpに記述。

function change_posts_per_page($query) {
	if (is_admin() || ! $query->is_main_query())
		return;

	if ($query->is_archive()){
		$query->set('posts_per_page', '5');
	}
}
add_action('pre_get_posts', 'change_posts_per_page');


// 以下条件分岐の例

//アーカイブページかどうか
if ( $query->is_archive() ) { ... }

//その他にも、下記の条件分岐が使えます(WordPress3.5.1時点、抜粋)。

//ポストタイプアーカイブか?(引数はポストタイプ名,または配列)(ラベルではない)
$query->is_post_type_archive( $post_types )

//著者アーカイブか?(引数は著者ID,ニックネーム,表示名,またはそれらの配列)
$query->is_author( $author )

//カテゴリーアーカイブか?(引数はカテゴリーID,スラッグ,名前,またはそれらの配列)
$query->is_category( $category )

//タグアーカイブか?(引数はタグスラッグ,またはその配列)
$query->is_tag( $slug )

//タクソノミーアーカイブか?(引数はタクソノミーのスラッグと、タームのID,名前,スラッグ,またはそれらの配列)
$query->is_tax( $taxonomy, $term )

//日付アーカイブか?
$query->is_date()

//フィードか?(引数はフィードの種類)
$query->is_feed($feeds)

//フロントページか?
$query->is_front_page()

//固定ページか?(引数はページID,タイトル,スラッグ,またはそれらの配列)
$query->is_page( $page )

//検索結果か?
$query->is_search()

//投稿か?(引数は投稿ID,タイトル,スラッグ,またはそれらの配列)
$query->is_single( $post )

//どの投稿タイプのシングルか?(引数は投稿タイプ,またはその配列)
$query->is_singular( $post_types )

//404ページか?
$query->is_404()