btmup Blog

Web 制作のことを中心に、ちょっとした Tips などを掲載しています。「自分用メモ」が基本スタンス。

WordPress

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

投稿日:

アーカイブページが複数に分割されているとき、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 なので情報の古さは否めませんが、よく整理されていて使いやすいと思うんですけどねぇ。







-WordPress
-, , ,

執筆者:


  1. ともりえみこ より:

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

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

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

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

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

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

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

comment

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

関連記事

no image

WordPress の自動アップグレード手順。

WordPress 2.7.1 の日本語版がリリースされています(公式ブログ)。 で、「自動アップグレード」というのができるので「便利だなー」「でもちょっと不安かなー」と思いつつ、もうこのブログは済ま …

no image

query_posts() で指定した条件をクリアする方法

データベースからコンテンツを取得するときに、その条件などを指定する「query_posts()」。 非常に便利、というか「使わないとやってられん」的な超定番関数です。 この query_posts() …

no image

カテゴリーごとの日付アーカイブを表示する WordPress プラグイン – 「Archives for a category」

WordPress 標準のテンプレートタグを拡張して、カテゴリーごとの日付アーカイブへのリンクを表示できるようにしてくれるプラグインです。 日付アーカイブへのリンクを表示するとき、標準では下記のテンプ …

no image

投稿記事の表示順を任意に設定できるプラグイン – 「AStickyPostOrderER」

こういうのが欲しかった! というプラグイン。 カテゴリーの表示順を設定するには「My Category Order」という素晴らしいプラグインが以前からあったのですが、投稿記事に関してはなぜかまったく …

no image

WordPress 2.8.4 は「テーマの編集」から関数の解説へリンクできる。

WordPress 2.8.4 にアップデートしたら、「テーマの編集」に新しい機能が追加されてました。 各テンプレート内で使用されている関数を自動で認識して、その解説ページへリンクしてくれます。 テン …