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

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

トップページの一覧表示はデフォルトじゃなくて特定のカテゴリーのみをループさせたい!
そんなときは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から導入されたらしい。