- ・特定のカテゴリーやタグに属する投稿のみ取得したい
- ・カスタム投稿タイプの最新記事を一覧表示したい
- ・投稿の並び順をカスタマイズしたい(公開日順やランダム表示など)
- ・カスタムフィールドの条件に合致する投稿を取得したい
- 特定の投稿タイプやカテゴリーを指定して取得
- 取得する投稿数を制限(例:「最新5件のみ取得」)
- 投稿の並び順を変更(例:「古い順」「ランダム」など)
- カスタムフィールドの値を条件に含める
- 検索機能を拡張(特定のカスタム投稿タイプ内で検索する など)
- 公開日が古い順に並べる
- ランダムで並べる
- カスタムフィールドの値で並べる(例:価格の高い順)
- ・特定の条件で投稿を取得できる(カテゴリー、タグ、カスタム投稿など)
- ・並び順や表示条件を柔軟に変更可能
- ・クエリのリセット (wp_reset_postdata()) を忘れずに
- ・メインクエリを変更する場合は pre_get_posts を検討

【ホームページ制作辞典】WP_Queryについて
目次
WP_Queryとは?
WP_Query は、WordPressの投稿データを取得・操作するためのクラスです。WordPressの標準機能では、特定の条件で投稿を取得するために「メインクエリ」という仕組みが用意されていますが、WP_Query を使うことで、より柔軟な条件でカスタムクエリを作成し、必要な投稿を取得できます。
例えば、以下のようなケースで WP_Query が活用されます。
WordPressの公式テーマやプラグインでも多く活用されているため、WordPressの開発を行ううえで理解しておくべき重要なクラスの一つです。
WP_Queryの基本的な使い方
WP_Queryを使うメリット
通常、WordPressのテンプレートでは、メインクエリを使用して投稿を取得します。しかし、メインクエリはあらかじめ決められた条件で動作するため、柔軟なカスタマイズができません。
WP_Queryの活用例
特定のカテゴリーの投稿を取得
WordPressでは、カテゴリーを指定して投稿を取得したいケースがよくあります。例えば、「ニュースカテゴリー(ID:3)の最新5件の投稿を取得する」といった場合、WP_Query を使用すると簡単に実現できます。
カスタム投稿タイプの一覧を表示
WordPressでは、通常の「投稿」以外にも「カスタム投稿タイプ」を作成できます。たとえば、「お知らせ」「商品情報」などのカスタム投稿タイプを利用している場合、WP_Query を使えば、特定のカスタム投稿タイプの一覧を取得できます。
カスタムフィールドを利用した絞り込み
カスタムフィールド(カスタムメタデータ)を条件に含めたい場合も WP_Query が有効です。たとえば、「価格が5000円以上の商品だけを取得する」といった条件を指定することが可能です。
投稿の並び順を変更
デフォルトでは、WordPressの投稿は「公開日が新しい順」に並びます。しかし、WP_Query を使うと、以下のようなカスタマイズが可能です。
このように、表示する順序を自由に変更できる点も WP_Query の大きな魅力です。
WP_Queryを使う際の注意点
メインクエリとの違いを理解する
WP_Query は、新しいクエリを作成するためのクラスです。そのため、デフォルトのメインクエリとは別に新しいクエリを発行します。
もしメインクエリ自体の条件を変更したい場合は、WP_Query を使うのではなく、pre_get_posts フックを利用するほうが適切な場合もあります。
データベース負荷に注意
WP_Query を多用しすぎると、データベースの負荷が増加し、サイトのパフォーマンスが低下する可能性があります。特に、ループ内で繰り返し WP_Query を使用するのは避けるべきです。
クエリのリセットを忘れずに
WP_Query を使った後は、wp_reset_postdata() でクエリをリセットすることが推奨されます。これを忘れると、テンプレートの他の部分で予期しない動作が発生する可能性があります。
WP_Queryと他の投稿取得手段の比較
WordPressでは、WP_Query 以外にも投稿データを取得する方法があります。代表的なものとして get_posts() と query_posts() がありますが、それぞれの用途は異なります。
取得方法 | 特徴 | 使いどころ |
---|---|---|
WP_Query | 柔軟な条件指定が可能 | カスタマイズした投稿一覧を作成する場合 |
get_posts() | シンプルな配列で取得 | ループを使わず手軽に投稿を取得したい場合 |
query_posts() | メインクエリを変更 | 非推奨(pre_get_posts の使用を推奨) |
WP_Query は、特定の条件で投稿データを取得したい場合に最適ですが、簡単な用途であれば get_posts() でも十分なケースがあります。
まとめ
WP_Query は、WordPressの投稿データを柔軟に取得するための強力なクラスです。特定のカテゴリーの投稿取得、カスタム投稿の表示、並び順の変更など、カスタマイズした投稿リストを作成する際に非常に便利です。
ただし、WP_Query の使いすぎはデータベース負荷の増大につながるため、適切な使い方を心がけることが重要です。
WP_Queryのポイントまとめ
WordPressのカスタマイズを行う際に、WP_Query を適切に活用することで、より自由度の高いサイト制作が可能になります。
このコラムを書いた人

さぽたん
AdvisorDirectorDesignerFront-end-engineer
ホームページに関するお困りごと、
ご不明点があればお気軽にお問い合わせください!