まず結論
post_type は、WP_Query で取得する投稿タイプを指定する引数です。通常は指定しない場合に通常投稿の post が既定値になり、固定ページを取得したい時は page、カスタム投稿タイプを取得したい時はその投稿タイプ名を指定します。ただし、tax_query を指定したクエリでは既定値が any になるため、対象を限定したい時は post_type も明示します。
post_type を理解すると、WP_Query の「何を取りに行くクエリなのか」がはっきりします。たとえばブログ記事の一覧を作るのか、固定ページの一覧を作るのか、イベントや商品などのカスタム投稿タイプの一覧を作るのかを、この引数で切り替えます。
初心者がつまずきやすいのは、管理画面で見えている名前と、コードで指定する投稿タイプ名が必ずしも同じではない点です。画面上では「イベント」と表示されていても、コードでは event や events のような登録名を使うことがあります。
post_type は何を指定する引数か
post_type は、投稿データの種類を指定するための WP_Query 引数です。WordPress では、通常投稿、固定ページ、添付ファイル、カスタム投稿タイプなどが、それぞれ投稿タイプとして扱われます。
WP_Query の $args に post_type を入れると、「この種類の投稿だけを取得する」という条件になります。何も指定していない時に通常投稿だけが出てくるのは、基本の取得対象が post になるためです。
ここで大事なのは、post_type は「投稿タイプを作る引数」ではないことです。すでに登録されている投稿タイプの中から、どれを取得対象にするかを指定します。
カスタム投稿タイプそのものを登録する時は、register_post_type() を使います。WP_Query 側の post_type では、登録済みの投稿タイプ名を指定して、その投稿タイプの投稿を取得します。
| 指定値 | 意味 | よく使う場面 |
|---|---|---|
post | 通常投稿 | ブログ記事やお知らせ一覧を作る時 |
page | 固定ページ | 固定ページを親子関係やIDで取得したい時 |
attachment | 添付ファイル | メディアを取得したい時。多くの場合は post_status も確認する |
any | 複数の投稿タイプを広く対象にする指定 | 検索や横断一覧で複数タイプをまとめたい時 |
book など | カスタム投稿タイプ名 | 商品、イベント、実績など独自の投稿タイプを一覧にしたい時 |
post、page、any、カスタム投稿タイプの違い
post_type で迷う時は、まず「通常投稿なのか、固定ページなのか、独自の投稿タイプなのか」を分けると整理しやすくなります。管理画面の見た目だけで判断せず、登録されている投稿タイプ名を確認します。
any は便利そうに見えますが、いつでも全てを取る魔法の指定ではありません。公式リファレンスでは、any はリビジョンなどを除き、検索対象から除外される投稿タイプも対象外になる指定として説明されています。横断検索や広い一覧で使う候補にはなりますが、目的の投稿タイプが決まっているなら明示したほうが読みやすいです。
post と page の違いも大切です。通常投稿はブログ記事やお知らせのような時系列のコンテンツでよく使い、固定ページは会社概要やお問い合わせのような固定的なページで使われます。
カスタム投稿タイプは、通常投稿や固定ページだけでは整理しにくいコンテンツを分けるために使われます。たとえば「イベント」「商品」「制作実績」などを独立した管理単位にしたい時に使われることがあります。
Builder での扱い
WP Query Builder では、post_type は最初に決めるべき基本条件のひとつとして扱う想定です。どの投稿タイプを対象にするかが決まらないと、その後のカテゴリー、タクソノミー、カスタムフィールド、並び順の条件も選びにくくなります。
たとえば、通常投稿を対象にするなら post、イベント一覧なら登録済みのイベント用投稿タイプ、商品一覧なら商品用投稿タイプを選ぶ、という順番で考えます。ここを曖昧にしたまま条件を足すと、「条件は合っているのに投稿が出ない」ように見えることがあります。
Builder 側で複数の投稿タイプを選べる場合も、最初は1つだけで確認するのがおすすめです。1つの投稿タイプで取得できることを確認してから複数指定へ広げると、どの投稿タイプで結果が変わったのか分かりやすくなります。
使いどころ・避けどころと実践確認
通常投稿、固定ページ、カスタム投稿タイプなど、どの種類の投稿から取得するか決める時に使います。
画面上のラベルやテンプレート名を、登録済みの投稿タイプキーの代わりには使いません。
any はすべての状態・種類を無条件に含む意味ではなく、添付ファイルなどは post_status も別に考えます。
表示名が「お知らせ」でも登録キーが news なら、post_type へ渡すのは news です。
登録済みの投稿タイプ、各タイプの公開投稿ID、指定した post_status を出力し、単独指定と配列指定の結果を比べます。
WordPressの仕様で確認するポイント
公式資料では、WP_Query の post_type は Post Type Parameters の中で説明されています。post、page、attachment、any、カスタム投稿タイプのように、取得対象として指定できる値を確認できます。
カスタム投稿タイプの登録方法や登録時の引数を確認したい場合は、WP_Query ではなく register_post_type() の公式リファレンスを見ます。post_type は取得条件、register_post_type() は登録処理、というように役割を分けて読むと混乱しにくくなります。
公式リンク
公式ドキュメント
post_type は基本的な引数ですが、間違えると何も表示されない原因になります。特にカスタム投稿タイプでは、画面上の表示名ではなく、登録されている投稿タイプ名を使うことを意識します。
迷った時は、まず通常投稿の post で1件取得できるかを確認し、その後でカスタム投稿タイプ名へ差し替えます。そこから条件を1つずつ足していくと、どこで取得結果が変わったかを追いやすくなります。
post_type の最終チェック
- 取得したい対象が通常投稿、固定ページ、カスタム投稿タイプのどれかを分けた
- 画面上の表示名ではなく、登録済みの投稿タイプ名を指定した
- カスタム投稿タイプを作る処理と、WP_Queryで取得する処理を混同していない
- まずは
post_type、post_status、posts_per_pageだけの最小構成で確認した - 複数投稿タイプや
anyは、目的がある時だけ使う
公式リファレンス
仕様や原文の説明も確認したいときは、公式ドキュメントと整理ページをあわせて見ると理解しやすくなります。
この記事の検証情報
検証環境
- WordPress
- 7.1
- PHP
- 8.3.33
- テーマ
- wpq-media + DDEV
- 対象
- カスタム投稿 / taxonomy / meta_query
更新履歴
- 2026年5月31日 内容を増補し、v3 基準の glossary 構成に調整
- 2026年5月26日 glossary 用の初回ドラフトを作成
この用語を活用する
あとで見返す・共有する
お気に入りに保存できます。役に立ったポイントは、いいねや共有で教えてください。
他の用語も続けて確認できます
似た用語や周辺知識をまとめて見たいときは、用語集トップから探すと迷いにくくなります。