<?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()