wordpressでquery_postsを使うならpre_get_postsをフックすべし。

    目次

  1. 実装方法

トップページの一覧表示はデフォルトじゃなくて特定のカテゴリーのみをループさせたい!
そんなときはget_postsかquery_postsを使うケースも多かったと思う。

これからはpre_get_postsをフックしてあげようと思う。

その方が効率がいいっぽいので。

というのも、query_postsで新しくクエリを発行するという事は、既に1回発行してあって、2回目の発行を行うということになるっぽいので。

それだったら最初からこちらの意図したクエリでDBアクセスしてよ、というのが
パフォーマンス至上主義者のみなさんの本音でしょう。

ということでそのためのフックが、pre_get_postsというわけです。

実装方法

https://gist.github.com/soylatte/4983354.js

これで効率よく初期表示を変更できる。

is_main_query()を組み合わせることで、同一ページに別のループがあっても予期せぬ影響を与えずに済む。
これはver3.3から導入されたらしい。

コメント

  • […] 菱川拓郎様:query_postsを捨てよ、pre_get_postsを使おう【追記あり】【報告あり】 鈴木徹也様:wordpressでquery_postsを使うならpre_get_postsをフックすべし。 […]

質問やご指摘など募集中です

(マークダウン記法使えます)