まず結論
global $post は、WordPress で現在処理中の投稿オブジェクトを参照するためのグローバル変数です。The Loop の中で the_post() が呼ばれると現在の投稿データが準備され、テンプレートタグはその投稿をもとに表示します。
WordPress のテンプレートでは、今どの投稿を表示しているのかを前提にして動く処理が多くあります。the_title() や the_content() のようなテンプレートタグは、現在の投稿データを参照して表示内容を決めます。
その現在の投稿データと関係する代表的な変数が $post です。関数やテンプレートパーツの中でグローバル変数として参照したい場合に、global $post; と書くことがあります。
global $post は何を指す言葉か
global $post は、PHP の関数スコープ内などで WordPress のグローバルな $post 変数を参照するための書き方です。$post には、現在の投稿を表す投稿オブジェクトが入ります。
ただし、初心者が最初から $post を直接操作する必要はあまりありません。多くの場合は、the_title()、get_the_ID()、get_post_meta() などのテンプレートタグや取得関数を使うほうが安全で読みやすくなります。
ここで大事なのは、global $post は投稿を取得するための条件ではないことです。投稿の取得条件は WP_Query や main query が担当します。global $post は、取得されて現在処理中になっている投稿を参照するためのものです。
そのため、投稿が表示されない時に最初から global $post を触るのではなく、まずクエリが投稿を取得できているか、ループが正しく回っているかを確認します。
| 用語 | 役割 | 確認ポイント |
|---|---|---|
$post | 現在の投稿オブジェクトを表す変数 | ループ中の現在投稿と関係する |
global $post; | 関数内でグローバルな $post を参照する宣言 | フックや関数内で使うことがある |
the_post() | 次の投稿を現在の投稿として準備する | The Loop の中で使う |
| テンプレートタグ | 現在の投稿をもとに表示する関数 | the_title()、the_content() など |
custom query と wp_reset_postdata() の関係
独自 WP_Query で custom query を作ると、ループ内の the_post() によって現在の投稿データが切り替わります。つまり、$post も独自クエリの投稿を指す状態になります。
そのため、custom query のループが終わったら wp_reset_postdata() を呼び、元の投稿データへ戻す必要があります。これを忘れると、後続のテンプレートタグが独自クエリの最後の投稿を参照してしまうことがあります。
このコードの読みどころは、独自クエリのループ後に wp_reset_postdata() を入れている点です。これにより、custom query で変更された投稿データを戻します。
global $post の不具合に見える問題でも、実際には独自クエリ後に投稿データを戻していないことが原因の場合があります。custom query と $post の関係をセットで確認します。
Builder での扱い
WP Query Builder では、global $post をユーザーに直接入力させる項目として扱う必要はあまりありません。むしろ、生成コードのループやテンプレートタグが、現在の投稿データを正しく扱うようにすることが重要です。
Builder で custom query のコードを生成する場合は、$query->the_post() と wp_reset_postdata() をセットで出す方針が安全です。これにより、現在の投稿データの扱いによる事故を減らせます。
もし現在の投稿IDを使って関連記事を除外するようなコードを生成する場合も、まずは get_the_ID() のような関数を使う形を検討します。global $post は必要な場面に限定します。
使いどころ・避けどころと実践確認
テンプレートタグが現在どの投稿を参照するか、ループ中の共通状態を説明する時に使う概念です。
関数へ明示的に渡せる投稿IDまでグローバル状態へ依存させる設計は避けます。
独自ループが $post を差し替えたままだと、本文外のタイトルやリンクまで別投稿を指すため、変更範囲を閉じます。
リンク先だけがずれる時は、表示部品の直前で $post がどの投稿を指しているかを見ると原因を絞れます。
ループ前後で get_the_ID() と $post->ID を記録し、復元処理後に元のIDへ戻ることを確認します。
WordPressの仕様で確認するポイント
公式資料では、The Loop の基本で、投稿を1件ずつ処理する流れを確認できます。WP_Query のリファレンスでは、クエリ結果とループの関係を確認できます。
また、custom query 後に投稿データを戻す wp_reset_postdata()、投稿オブジェクトを取得する get_post() も合わせて確認すると、$post の扱いを理解しやすくなります。
公式リンク
公式ドキュメント
global $post は、現在処理中の投稿オブジェクトを参照するためのグローバル変数です。The Loop の中で the_post() が呼ばれると、現在の投稿データが準備されます。
迷った時は、まずテンプレートタグや get_the_ID() などの取得関数で足りるかを確認します。custom query を使う場合は、ループ後に wp_reset_postdata() を入れて、投稿データを戻します。
global $post の最終チェック
global $postは現在の投稿オブジェクトを参照するためのものだと理解している- The Loop と
the_post()の関係を確認した - まずテンプレートタグや取得関数で足りるか確認した
- custom query 後に
wp_reset_postdata()を入れている - どのクエリのループ内で
$postを参照しているか確認した - 直接
$postを書き換える使い方は慎重にしている
公式リファレンス
仕様や原文の説明も確認したいときは、公式ドキュメントと整理ページをあわせて見ると理解しやすくなります。
この記事の検証情報
検証環境
- WordPress
- 7.1
- PHP
- 8.3.33
- テーマ
- wpq-media + DDEV
- 対象
- カスタム投稿 / taxonomy / meta_query
更新履歴
- 2026年8月29日 本文と補助情報を更新
- 2026年8月15日 初回公開
この用語を活用する
あとで見返す・共有する
お気に入りに保存できます。役に立ったポイントは、いいねや共有で教えてください。
他の用語も続けて確認できます
似た用語や周辺知識をまとめて見たいときは、用語集トップから探すと迷いにくくなります。