WordPress の $post からカスタムフィールドの値を取得できる

  • WordPress

グローバル変数である $post にはデータベースのテーブル wp_posts の記事情報が入っています。なので

$post->post_title

で記事のタイトルを取得できます。とはいえ、記事のタイトルならループ用の関数the_title()などを使うのが通例かもしれません。

これは知らなかったのですが、$postは存在しないプロパティにアクセスしようとするとマジックメソッドである__get()から値を頑張って取得しようとしてきます。

例えば、$post->post_categoryというプロパティはWP_Postクラスには存在しませんが、現在の投稿タイプのカテゴリ情報を取得できます。(ただしデフォルトのカテゴリー情報のみで、カスタムタクソノミーに設定したタームは取得できない)

そして、最終的にget_post_meta()が呼ばれカスタムフィールドのキーに一致するかどうか調べ、存在すればフィールドの値、存在しなければ空文字が返されます。

一瞬インスタンスプロパティには存在せず、何にアクセスしてるのかわかりにくいのでやめてほしい気もしますが、こういうのは普通なんですかね…。

素直にget_post_meta()を使ってほしいところです。