WordPressのget_postで抜粋文などが取得できないときの対処方法

WordPressで投稿のIDから投稿情報を取得しようとget_post()関数を使用したら、本文やタイトルは取得できるのですが、抜粋$post->post_excerptが取得できませんでした。

ググってみたら、解決方法をようやく海外のサイトで見つけたので、日本語の検索にもヒットするように、メモがてら紹介です。

photo by mkhmarketing

スポンサーリンク
レクタングル(大)広告

get_postで抜粋文を取得する方法

その方法というのが以下です。

global $post;
$id = get_the_ID();//何らかの方法で投稿のIDを取得
$post_id = get_post($id);//投稿情報の取得
setup_postdata($post_id);//投稿記事に関連するグローバル変数を設定
$exce = $post_id->post_excerpt;//抜粋の取得

参考 WordPress › Support » post_excerpt bug in get_post?

ポイントとなるのが4行目でsetup_postdata()を行わないと、$post_id->post_excerptなどに内容がセットされないようです。

投稿をIDなどの取得方法は、以下のような方法でも良いですし、他にも方法はいろいろあると思います。

$id = url_to_postid( $url );

まとめ

僕は当初、get_post()関数を利用するだけで、抜粋が取得されるものだと思っていて、思わぬ不具合になってしまいました。

get_post()を使って、投稿情報を取得し抜粋などを利用する場合は、setup_postdata()を利用すると覚えておく必要があります。

スポンサーリンク
レクタングル(大)広告
レクタングル(大)広告

スポンサーリンク