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

btmup Blog

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
-, , ,

Copyright© btmup Blog , 2019 All Rights Reserved Powered by AFFINGER5.