この質問は少し古いですが、現代の時代にこれを見つけた人は、query_postsを呼び出さないでください。Wordpress codexから:
query_posts()は、ページのメインクエリをクエリの新しいインスタンスで置き換えることにより、ページのメインクエリを変更する非常に単純で問題の多い方法です。これは非効率的であり(SQLクエリを再実行します)、状況によっては完全に失敗します(特に、ページングのページングを処理する場合)。
...
TL; DRはquery_posts()を使用しません。
代わりに、pre_get_posts
次のようにfunctions.phpでフックを使用する必要があります。
function hwl_home_pagesize( $query ) {
// Behave normally for secondary queries
if ( is_admin() || ! $query->is_main_query() )
return;
if ( is_home() ) {
// Display only 1 post for the home page
$query->set( 'posts_per_page', 1 );
return;
}
// Otherwise, use whatever is set in the Wordpress Admin screen
$query->set( 'posts_per_page', get_option('posts_per_page'); );
}
add_action( 'pre_get_posts', 'hwl_home_pagesize', 1 );
ただし、場合によっては(ポストオフセットの調整など)、pre_get_posts
フックを使用するとページ付けが損なわれる可能性があることに注意してください。これを修正することは難しいことではありませんが、注意する必要があります。これを修正する方法の例がここにあります。