WordPressで覚えて損はないループのカスタマイズ。このカテゴリをランダムに表示したい、1年前の記事を表示したいをしたいときにループのカスタマイズをします。
付け焼刃での知識のWordPress使いとしてはループのカスタマイズは難しく感じてしまうので、他の人はどうやってやっているんだろうと、WordBench名古屋に参加してきました。
で、結局、考えれば考えるほど謎が深まっていき調べることになったのでメモがてらに記載
メインループとサブループがある
メインループはURLのパラメーターに左右される記事一覧。URLに表示されていなくてもデフォルトの設定がある。
サブループはURLのパラメーターに左右されない記事下にある関連記事やサイドバーの新着記事のようなもの。
メインループのカスタマイズ(表示条件設定)はquery_posts、サブループはWP_Queryを使う。
pre_get_postsはメインループをカスタマイズするquery_postsの代わりのもの
query_postsを使っていると、メインループがカスタマイズされてしまい、別のページに移動するときに正しく表示されない!なんてことがよくあったらしいのでquery_postsはやめて、pre_get_postsに置き換えようというもの。
qury_postsはデフォルトの設定をデータベースから読み込んだ後に、カスタマイズする設定をデータベースから再度読み込む2度漬けではなく1度目のデータベースの読み込む前にpre_get_postフィルターがカスタマイズ条件を追加してくれるというもの。これにより、2回読み込むところらか1回で済むので負担が少なくなるらしい。
pre_get_postsはfunctions.phpに書く
それからindex.phpなどに書くのではなく、functions.phpに書くこと。それから管理画面にも影響を与えてしまうので、管理画面を除くという条件を付加させてやらないといけない。
いざ!実践!
よしやってみよう!
と自分のテーマファイルとを検索したらquery_postsを使っているところは1つもなかった。。。
WP_Queryを使っているところもあるんだけど、サブループに使ってもいいのかなぁ?
勉強会の時では、特定のカテゴリーのテンプレートを別に1枚作るよりも、pre_get_postsを使えば既存のもので済むよ。pre_get_postsがたくさんになると分からなくなるから別のファイルにしておいてfunctions.phpに読み込んでおくと便利よ。というお話がありました。
いつになったらpre_get_postsを使える日がくるのか。
WordFes2014は8/30にあるよ!
名古屋のWordPressの1年に一度の大イベントWordFesは8/30にあるよ。