南国スキーぶろぐ・Z

岩手県盛岡市のネタを中心としたお出掛け雑記ブログ

WordPressでよく使うサブループget_postsとWP_Queryの備忘録

にほんブログ村 地域生活(街) 東北ブログ 盛岡情報へにほんブログ村 地域生活(街) 東北ブログ 岩手県情報へ

2019/06/29

Web, wordpress , ,

WordPressでサイトを構築する上で必須の記述が投稿の記事を取得するためのループです。
使用する状況によって書き方が違うので、適切なループ処理を行わないと、取得したい情報を取得出来なかったり、ページネーションでページ送りをする事が出来なかったり、困った状況になってしまいます。

WordPressで必須な記述だけど、基本的に記述するのはテンプレートを作成している時だけなので、そんなに頻繁に記述する物じゃないんだよね。
となると、まー忘れる忘れる(笑)。

ここは通常のループでOK。
ここではget_postsによるサブループ。
ここではWP_Queryによるサブループ。
ここはfunctuins.phpでアクションフックかけてメインループを書き換えよう。

などなど、使用するループの判断とざっくりした記述の形は分かるんだけど、エラーを出さずにしっかり記述出来るかと言ったらTHE無理。
どーしてもディテールが思い出せずに、その都度google先生に頼っちゃう。

だもんで、自分のために備忘録として基本的なループの記述をまとめておきます。

  • 通常ループ
  • get_posts
  • WP_Query
  • pre_get_postsでアクションフック

今回はこの四つをまとめます。

通常のループ

get_postsのサブループ

get_postsによるループではページネーションによるページ送りが効かないので要注意。
get_postsとWP_Queryでは取得できる情報量が違うので、get_postsはサイトバーとかにチョコット情報を表示させたい時などに使うのが吉。
投稿がなかった場合に表示させるelse部分も忘れずに書きましょう。

WP_Queryのサブループ

ループの種類が良く分からない時は、WP_Queryによるループを書いておけば問題ないと思われる。
ただ、ページネーションによるページ送りが必要な場合は、2行目と6行目が必須。

pre_get_postsで表示件数を変える

これだけfunctions.phpに書きます。
特定のテンプレートだけ、WordPress管理画面の表示設定「1ページに表示する最大投稿数」で指定した件数じゃなくしたい場合に使用。

カテゴリー以外の条件分岐は公式のWordPress CODEXを参照。

とりあえずこんなところかな?
googleでWordPressのループを検索すると、未だにquery_postsが出てくるけど、query_postsは現在非推奨なので使わないようにしましょう。
その内、カスタムフィールドの値を取得する記述もまとめておこうかな...。