WordPress3.0(.1)のページネーション

チョー手軽にページネーション(1ページ目、とか2ページ目とかのリンクを表示するアレ)の機能を導入できるWP-PageNaviですが、query_posts()と相性が良くないようで、フォーラムでも度々お題として上がってます。

で、query_posts()の引数の前に「$query_string . 」をつけるとか、$paged=get_query_var('paged')を取得して、'paged=' . $pagedをつけるという、解決方法が提示されていますが、それでもうまくいかねぇ(404ページに飛んだりする)。

でググると、Ktai StyleのYurikoさんのサイトの「WP-PageNaviを使わずナビゲーション表示」に行き着きますが、これを書いてもうごかねぇ・・・。もう八方塞です。

管理画面の「表示設定-(デフォルト10件かな)」を1件にしたら動いた(参照先失念)という情報も有りましたが、どうにもこうにも動きません。

どうもWP3.0(.1)では「この件数でページあたりn件表示なら、全部で何ページ?」かを示す「$wp_query->max_num_pages」の値が取れていないようです(少なくとも以前のバージョンでは大丈夫だったのでしょう。未検証)。

で別件を調べてて$wp_queryをprint_r()して目に付いた「$wp_query->found_posts」、クエリーに合うpostの総件数です。

ちゃんと条件に合うpostの件数も取れてます。
総件数とページあたりの表示件数がわかれば、小学生でも計算できます。

で次のようにしました。

$paged = get_query_var('paged');//現在何ページ目かを取得
$posts_per_page = 5;//1ページあたりの表示件数を設定
$total_page_num = ceil( $wp_query->found_posts / $posts_per_page );//生成されるページ数、変数名はお好きなように。
query_posts( 'paged=' . $paged . '&posts_per_page=' . $posts_per_page . 'お好きな条件' );


(中略&2010/11/04変数名を修正しました。)

でYurikoさんの「WP-PageNaviを使わずに・・・」のコードの

'total' => $wp_query->max_num_pages,

'total' => $total_page_num,

に変更!

 

・・・うふぉふぉ、動いたよ!

表示されたよ、2ページ目も、3ページ目も!!

 

WP3.0.1(3.0でも大丈夫だと思われ。)でquery_posts()+ページのナビゲーションでお困りでしたら、お試しあれ。

(私の環境では動きましたが、使ってるバージョンやサーバー、使用中のプラグインによっては動作しない場合もあると思われます。各自良く動作検証なさってください。)

「WordPress3.0(.1)のページネーション」への2件のフィードバック

  1. wp3で、今までの方法だとページ送りができず、困っていました
    そこで、参考にさせていただき、できるようになりました!!
    とても困っていたので感謝です!!

    ところで、
    query_posts( ‘paged=’ . $paged . ‘&posts_per_page=’ . $posts_per_paged . ‘お好きな条件’ );

    &posts_per_page=’ . $posts_per_page .
    ですよね?
    最初に
    $posts_per_page = ●;
    としていたから、変数のつづりが一個多い気がしました

  2. nyamuさん
    お役に立てたようで何よりです。
    また変数名の綴り違いのご指摘ありがとうございます。
    修正しました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です