get_post() の使い方|説明・引数・注意点

説明

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

コメント

タイトルとURLをコピーしました