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 2.7 日本語版リリース。

先週の英語版に続いて日本語版が正式にリリースされました。 (相変わらずダッシュボードのメッセージは環境によって出たり出なかったりするんですけど) とりあえずテスト用の環境でアップグレード。 ちょちょっ …

no image

WordPress 2.6 で画像を挿入したら横幅が自動的に500pxになってしまう問題の解決方法。

ググればすぐ見つかるんですけど、一応メモ。 WordPress 2.6.5 の環境でアップロードした画像を投稿記事に挿入したところ、なぜか横幅の最大値が 500px になってしまうということがありまし …

no image

カスタムフィールドの指定したキーの値だけ表示する方法

カスタムフィールドに入力した値を出力するには、 <?php if(have_posts()) : while(have_posts()) : the_post(); ?> <?php …

no image

WordPress のビジュアルエディタで文字サイズを変更する方法。

なんか最近、ビジュアルエディタの話題ばっかりやなぁ。 ……ま、いっか。 今回は、文字サイズの変更方法です。 WordPress 標準のビジュアルエディタには、文字の色を変えたり強調表示(<str …

no image

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

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