2008-06-25
query_posts ではまった→スッキリ
投稿記事一覧を query_posts()
を使って出力して、1ページに10投稿ずつ表示していく場合、単純に1ページあたりの投稿表示数を指定すれば大丈夫だと思ってました。
こちら記事は古くなっています。
query_posts については、以下の記事にて解説されているように、別の方法で対処できることがほとんどです。
query_postsを捨てよ、pre_get_postsを使おう【追記あり】【報告あり】 | notnil creation weblog
<?php query_posts ( posts_per_page==10 ); ?>
<?php if ( have_post() ) : while ( have_posts() ) : the_post(); ?>
1ページ目を見たときには全く気づかなかったんですが、2ページ目を見てみると1ページ目と同じリストが表示されてる…。
どれだけページを進めても実際取得しているのは先頭の10件だけ。
posts_per_page
とか showposts
とかパラメータの値を変えたり、パラメータ自体を変えたりしてみたが一向に上手くいかない。
調べてみると、フォーラムで同じ質問している人がいました。
それによると、query_posts()
は現在ページの指定がないと2ページ目だろうがなんだろうが1ページ目を読み込んでしまうようで、これは query_posts()
だけではどうしようもない様子…。
それでもこの問題が簡単に解決する方法が解説してあったので、早速試してみました。
そこに書いてあった解決法は、以下の通り
<?php $paged = get_query_var( 'paged' ); ?>
<?php query_posts ( "posts_per_page=10&paged=$paged" ); ?>
<?php if ( have_post() ) : while ( have_posts() ) : the_post(); ?>
query_posts()
の前で、現在のページ数を指定する paged の値を取得して、その値を query_posts()
の paged の中に毎回入れていくってことなのかな?
おかげさまで悩んでた query_posts()
のワナから抜け出し、スッキリしたのでした。