説明
get_post() は、投稿IDまたはオブジェクトから、1件分の投稿データを取得する関数です。
基本構文
get_post( int|WP_Post|null $post = null, string $output = OBJECT, string $filter = 'raw' ): WP_Post|array|null
引数
$post:投稿IDまたはWP_Post。省略するとループ中の現在の投稿$output:OBJECT/ARRAY_A/ARRAY_N$filter:フィルター種別(既定raw)
戻り値
WP_Post(または配列)。存在しなければ null。
使い方(サンプル)
$post = get_post( 123 );
if ( $post ) {
echo esc_html( $post->post_title );
}
注意点
- 存在しないIDでは
nullが返るので、必ず存在チェックをします。 - 本文は未加工の状態です。表示するときは
apply_filters( 'the_content', ... )を通します。
実務での使いどころ
- 投稿IDから、タイトルや本文などの投稿データを、オブジェクトで取得するとき。
- ループの外で、特定の投稿の情報を使うとき。
$outputにARRAY_Aを指定して、連想配列で受け取るとき。
よくあるミスと対処
- 存在しないIDでは
nullが返るのに、確認せずにプロパティへアクセスしている。 - 引数を省略すると、グローバルの
$postが使われる。ループの外で省略すると、意図しない投稿になる。 post_contentをそのまま出力している。フィルター前の生の内容なので、表示するときはapply_filters( 'the_content', ... )を通す。
NG例
$post = get_post( $id );
echo $post->post_title; // 存在しないIDだと、警告になる
OK例
$post = get_post( $id );
if ( $post ) {
echo esc_html( $post->post_title );
}
使い分け早見表
| 取得したいもの | 使うもの |
|---|---|
| 投稿データ全体(オブジェクト) | get_post() |
| 特定のフィールド1つ | get_post_field() |
| カスタムフィールドの値 | get_post_meta() |
関連項目
get_posts()、get_the_title()、get_post_field()、get_post_meta()
公式リファレンス:get_post() | Function | WordPress Developer Resources

コメント