Home > WordPress > query_posts() を設定すると「WP-PageNavi」プラグインが正常に動作しなくなる件の解決法

query_posts() を設定すると「WP-PageNavi」プラグインが正常に動作しなくなる件の解決法

[読了時間の目安:約 4 分]

アーカイブページが複数に分割されているとき、WordPress 標準の機能だけでは「次のページへ»」とか「«Prev」と表示するくらいしかできません。
しかし、「WP-PageNavi」を使うと、総ページ数を表示してくれたり、順番だけではなく(ある程度)任意のページに直接アクセスできたりするナビゲーションを表示してくれます。
導入や使い方も非常に簡単で、日本語ファイルも公開されており、ものすごく便利なプラグインなのです。

(ここで「WP-PageNavi」の解説はしませんが、ググったらたくさん情報がありますのでそちらを参照ください)

さて、そんな超便利プラグイン「WP-PageNavi」ですが、「query_posts()」と併用しているとき正常に動作しないという事態にハマってしまったので、解決法と共に書き記しておこうと思います。

起こった問題

query_posts() は、コンテンツのデータをデータベースから取得する際の条件を設定するための関数です。

例えば


<?php query_posts('cat_ID=2'); ?>

とすると、「カテゴリーの ID が 2 の記事を取得しなさい」という意味になり、この後に記事を一覧表示するようなタグがあれば、ID が 2 のカテゴリーに属する記事一覧が表示されます。

ただ、上記のように、指定したい内容だけをただ設定した場合、WP-PageNavi が正常に動作しません。
現在のページがおかしかったり、そもそも一覧表示すべき記事がうまく表示しなかったりします(何ページになっても、ずっと 1 ページ目のまま変わらなかったり)。
原因の詳細は不明ですが、query_posts() によってデータを取得する条件が変化したことで、WP-PageNavi が動作する際の条件(全体の記事数とか現在のページとか)にも影響が及んだのだと思います。恐らく。たぶん。

解決法

で、どうすれば解決するかといえば、query_posts() の設定を下記のようにちょっと修正すれば大丈夫のようなのです。


<?php query_posts($query_string . '&' . 'cat_ID=2'); ?>

追加されたのは「$query_string . ‘&’ . 」の部分。
「$query_string」は、「ページごとに用意された標準の条件」を追加できる変数です。
以前の記事でも紹介してます)

つまり、「ページごとに用意された標準の条件」をひとまず設定した上で、設定したい内容だけ上書きする、ということですね。
どうやらこの「標準の条件」が抜けているがために、WP-PageNavi が正常に動作しなくなってしまったようです。

状況証拠ばかりで、具体的な処理内容は一切分かりませんが。

こちら↓の本に query_posts() の書式などが詳しく載っているので(P.50 あたり)、ご興味のある方はどうぞ。

なんかレビューの点数低いなぁ……(1 件だけやけど……)。
対応バージョンが 2.6 なので情報の古さは否めませんが、よく整理されていて使いやすいと思うんですけどねぇ。

Comments:1

ともりえみこ 10-01-09 (土) 18:46

ありがとうございます。wp ver2.9でしたが、同じ現象が解決しました。助かりました。

Comment Form
Remember personal info

Trackbacks:6

Trackback URL for this entry
http://blog.btmup.com/wordpress/query_posts-wp-pagenavi.html/trackback
Listed below are links to weblogs that reference
query_posts() を設定すると「WP-PageNavi」プラグインが正常に動作しなくなる件の解決法 from btmup Blog
pingback from 諦めないで…!WordPressでページ送りがうまく行かない時の3つの対処法+究極奥義 | ウェビメモ 11-11-11 (金) 8:32

[...] 参考:query_posts() を設定すると「WP-PageNavi」プラグインが正常に動作しなくなる件の解決法 ? btmup Blog [ボトムアップ ブログ] [...]

pingback from WordPressのWP-PageNaviが動かない場合の対処法 | GRAFFITI on the web 12-02-04 (土) 3:32

[...] query_posts() を設定すると「WP-PageNavi」プラグインが正常に動作しなくなる件の解決法 関連記事 [...]

pingback from WP Pagenavi 動かない | rtlmemo.wordpress.com 13-02-07 (木) 15:33

[...] query_posts() を設定すると「WP-PageNavi」プラグインが正常に動作しなくなる件の解決法 | btmup Blog 諦めないで…!WordPressでページ送りがうまく行かない時の3つの対処法+究極奥義 | ウェビメ [...]

pingback from WP Pagenavi 動かない | Docs.So-Co.info 13-04-08 (月) 18:22

[...] query_posts() を設定すると「WP-PageNavi」プラグインが正常に動作しなくなる件の解決法 | btmup Blog 諦めないで…!WordPressでページ送りがうまく行かない時の3つの対処法+究極奥義 | ウェビメ [...]

pingback from WordpressのプラグインPagenaviで/page/2/がnot found… | MISC 13-07-01 (月) 18:14

[...] 参考:query_posts() を設定すると「WP-PageNavi」プラグインが正常に動作しなくなる件の解決法 [...]

pingback from カスタム投稿タイプでページャーを使う 13-11-04 (月) 22:22

[…] 勝手にリンク貼ってしまいます。 「諦めないで…!WordPressでページ送りがうまく行かない時の3つの対処法+究極奥義」とか、「query_posts() を設定すると「WP-PageNavi」プラグインが正常に動作しなくなる…などなど。。。。今となっては、他のどんなサイトを見たのか、あせっていたりするので、もう覚えていません(^_^;) […]

Home > WordPress > query_posts() を設定すると「WP-PageNavi」プラグインが正常に動作しなくなる件の解決法

リンク
フィード
メタ情報

このページのトップへ