WordPress:[wp-query]と[get_posts]と[query_posts]

ウオトミズ(UOTOMIZU)の中の人

自分用。

メインループとサブループ(カスタムループ)

メインループとは

各テンプレートで一回のみ使うことができる。管理画面から[1ページに表示する最大投稿数]で数を指定できる。

 

サブループ(カスタムループ)とは

各テンプレートで何度でも使うことができる。自由に一覧化する記事のカテゴリー、タグや年月日などをカスタマイズしても良い。

 

query_posts() -function-

query_posts()はメインループを変更するためのもの。一旦query_posts()を変更すると、意図しない動きをする可能性がある。

ひとことで言うと、query_posts() は決して使うべきではありません。

….

query_posts を使うことによって、ページ上のメインクエリーが置き換えられ、ページの読み込み速度に影響を与えることに留意してください。最悪の場合、倍かそれ以上の処理が発生します。

引用元:https://wpdocs.osdn.jp/テンプレートタグ/query_posts

意図せず使わないために、query_posts()っていう関数があるんだなってな感じで覚えておけば良いはず。

テンプレートタグ/query posts:https://wpdocs.osdn.jp/テンプレートタグ/query_posts

 

補足:pre_get_postsを使うことが推奨されている

何らかの理由でメインループを変更したい場合、functions.phpでpre_get_postsを使ってメインループを変更することが強く推奨されている

pre get postsの詳細:https://wpdocs.osdn.jp/プラグイン_API/アクションフック一覧/pre_get_posts

WP Query : new WP_Query -object-

サブループ(カスタムループ)を作るためのもの。めっちゃくちゃ長いけれど、一通りwp_queryで出来ることが書いてある。

関数リファレンス/WP Query:https://wpdocs.osdn.jp/関数リファレンス/WP_Query

 

get_posts

WP Queryよりちょっとだけお手軽にサブループを使えるような感じ。

テンプレートタグ/get_posts:https://wpdocs.osdn.jp/テンプレートタグ/get_posts

シンプルなループ処理をするならget_postsでも出来るけど、より複雑なループ処理をしたいのならwp_queryでできる。そこまで複雑なループ処理を要することがなければ、テーマ作成者は使いやすい方を使ってる、って感じなのかな・・・?

 

おわりに

記事一覧のカスタマイズする方法を知りたければ、WP_Queryの使い方を覚えるだけでも良い。かなり自由にカスタマイズすることが可能になる。

 

.