WordPressでショートコードを展開した状態で投稿本文を取得する方法

WordPressで投稿本文を取得する方法の一つで「get_the_content」を使う方法があるんですが、ショートコードが展開されないまま取得されます。

もし、取得した投稿本文に対して「特定の文字列があるかどうか」をチェックして、その文字列を加工したい場合があるとします。

例えば「get_the_content」を使って取得した投稿本文に対して、チェックしたい文字列がショートコードの展開後に含まれるものだとしたら、チェックが漏れてしまいますね。

というわけで、ショートコードを展開済みで投稿本文を取得するには、以下の方法でできます。

//現在の投稿本文をショートコードを展開させて取得
$content = apply_filters( 'the_content', get_post_field('post_content', get_the_ID()) );

やっていること

「get_post_field」を使って現在の投稿の本文を取得して、フィルター「the_content」を適用して変数「$content」に格納しています。

コード中で使った「get_the_ID」「get_post_field」については、以下のページをご参考ください。

著者:bouya Imamura