CATEGORY

Wordpress

Wordpress】pre_get_posts のことを誤解していた模様

pre_get_posts?

806 PV

以前の記事で、pre_get_postsfunction.phpに色々書くのが好きになれない、的なことを書いていたのですが、どうも自分がメインクエリーとサブクエリーをごっちゃにして考えていた様なので、もう一度整理してみました。

以前の記事

【Wordpress】query_posts() → get_posts() / WP_Query() への道

頭の中を整理しよう

  • メインクエリー

    メインクエリーとは各ページごとに URL を元に呼び出されるクエリー文。query_posts()はこのメインクエリー自体を改変してしまうため、本来動くはずのページング等に影響を与える闇を含んでいた。

  • サブクエリー

    本来そのページでは表示されるはずのない記事を表示するために発行するクエリー文。query_posts()を使うことで、サブクエリーを発行せずともメインクエリーを改変していろんな記事が取得できるため、その方法が一般的だった。

  • pre_get_posts アクションフック

    function.phpに記述することでメインクエリーを改変できる。Wordpress はビューとコントローラーの、ビューのみで色々なことができるものという意識が強かったため、コントローラーのようなfunction.phpを使わなければならないという点になんとなく拒絶反応を示していた。

  • get_posts() / WP_Query()

    テンプレートに直接記述することでサブクエリーを発行できる。query_posts()とは違いメインクエリーを書き換えないので、ページングなどで悩むことがなくなる。

今までwp_reset_query()を使っていたので問題はあまりなかったのですが、
メインクエリーの書き換えは処理が重たくなりそうな気がするので、今後はきちんと使い分けていくことにします。

でもposts_par_pageくらいしか出番がなさそ~。。。w

ここに詳しく載ってます

CATEGORY : Wordpress

TAGS : | | | |

GO TOP