WordPress開発でよく見かけるのが、グローバル変数の「$post」です。テーマのPHPファイルで使われることが多いので、なにこれ?と思う方が多いのではないでしょうか。

当記事では、この「$post」の中身や使い方、注意点についてご紹介します。

「$post」とは?

WordPressで定義されているグローバル変数の1つです。この変数の中には、各投稿(カスタム投稿や固定ページなども対象)のIDやタイトルなどの情報が格納されています。

この「$post」さえ覚えておけば、ほとんどの情報にアクセスできるんですね。この非常に便利な変数の使い方〜注意点まで、それぞれ順番に解説していきます。

  • 「$post」の中身
  • 「$post」の使い方
  • 「$post」の注意点

「$post」の中身

「$post」の中身は「WP_Post」オブジェクトです。この「WP_Post」クラスで定義されているプロパティを参照することで、投稿に関する様々な情報を取得できるんですね。

class WP_Post {}

その中でも代表的なプロパティを以下にまとめました。取得できるすべての情報を知りたい方は、上記の「WP_Post」クラス内の各プロパティをご覧ください。

ID 投稿ID
post_date 投稿日時
post_content 投稿の本文の内容(エディターに書いた内容)
post_title 記事タイトル
post_excerpt 抜粋の内容
post_name スラッグ名
post_modified 更新日時
post_parent
親ページのID(固定ページなど)
guid
デフォルトのページURL
menu_order
表示順序(固定ページ)
post_type
投稿タイプ(投稿、固定ページ、カスタム投稿など判別)

「$post」の使い方

次に「$post」の使い方についてご紹介します。これが非常に簡単で、「$post」をグローバル宣言した後に、取得したいプロパティを参照するだけです。

テーマの「single.php」に以下を記述してみてください。簡単に投稿の情報を取得できるはずです。(WordPressループの中でお使いください。)

// グローバル宣言
global $post;

// 以下、各プロパティを参照して出力

// ID
echo $post->ID;

// 投稿タイトル
echo $post->post_title;

なお、クラス内のプロパティを参照するときには、「->」(アロー演算子)を利用します。上記以外の情報にアクセスする時は「$post->プロパティ名」で試してみてください。

「$post」の注意点

「$post」は、非常に便利なグローバル変数ですが、特に理由もなく乱用するのはオススメしません。というのも、スコープ(影響範囲)を考えずに多用していると、予期せぬバグが発生する可能性があるからです。

一般的なローカル変数は、アクセスできる範囲が決まっているため、変数名が重複しても意図しない場所で上書きされる可能性は極めて低いです。

しかし、グローバル変数はどこからでもアクセスできるため、変数名が衝突していつの間にか内容が上書きされる事態に発展する可能性があります。

適切に管理していれば問題ありませんが、開発に慣れていない方こそ注意深く扱う必要があるんですね。投稿の各情報を取得できる関数は別途定義されているので、できる限りそちらを使用する方が安全です。

投稿の各情報を取得できる関数

投稿に関する基本的な情報は、WordPressで定義されている関数を利用することで、より確実に取得できます。よく使われる関数を以下にまとめましたので、最初はこれらを利用することをオススメします。

get_the_ID() 投稿ID 解説
get_the_time() 公開日時 解説
get_the_content() 投稿の本文の内容 解説
get_the_title() 記事タイトル 解説
get_the_excerpt() 抜粋の内容 解説
get_the_modified_time() 更新日時 解説
get_the_permalink パーマリンク 解説

まとめ

WordPressのグローバル変数「$post」の使い方について解説しました。非常に便利な変数ですが、扱いには注意が必要だということを覚えておきましょう。

特に開発に慣れていない方は、専用の関数を利用することをオススメします。

なお、アイキャッチやカテゴリーなどのその他の情報を取得する方法を以下で解説してますので、ぜひこちらもご覧ください。