understandard

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() のワナから抜け出し、スッキリしたのでした。

response

  1. Deslio » Blog Archive » ページ送りの注意
    2011-09-08 13:31:02reply

    […] もっとスマートな解決は、understandard.net様・フォーラムで紹介されてました。 ありがとうございます。 […]

  2. wordpressでプラグインwp_pagenaviがうまく動作しない | Linuxとかをつついてみるブログ
    2012-05-26 10:01:48reply

    […] 以下のページが参考になりました、ありがとうございます query_posts ではまった→スッキリ | understandard WordPress › フォーラム » ページでページングを利用したい […]

leave a reply

your email address will not be published.

you may use these HTML tags and attributes: <a href="" title=""> <em> <i> <strong> <blockquote cite=""> <q cite=""> <cite> <pre> <code> <del datetime=""> <ins datetime="">