質問: str_replace($before, $after, $the_content); return $the_content; } add_filter( 'the_content', 'disable_calender_link', 12); ``` しかし、2に関しては『Ninja Forms』内に『MTS Simple Booking-C』のショートコードを埋め込むことでカレンダー自体は表示できているのですが、add_filterのthe_contentで取得した記事本文の中身がショートコードのままになっているため、上記の関数(disable_calender_link)でも置換できませんでした。 すべてのショートコードを展開したあとの本文を取得する方法はあればご教授いただきたいです。
回答: > > すべてのショートコードを展開したあとの本文を取得する方法はあればご教授いただきたいです。 > > > the_content フックでのショートコードの展開は、1回だけなので、ショートコードを展開した結果に別のショートコードが含まれているとそのショートコードはそのまま表示されます。 WordPress ドキュメントの Shortcode API にも > > If the enclosing shortcode is intended to permit other shortcodes in its output, the handler function can call do_shortcode() recursively: > > > とあるので、ショートコードを含まなくなるまで、do_shortcode 関数を繰り返し実行するぐらいしか無いと思います。 コンテンツ内のショートコードの有無を確実に判別できる方法があれば、`do_shortcode` を再帰的に適用する関数を自分で作成することで解決できると思いますが、コンテンツ内にショートコードがなくなったという判定条件が思いつかないです。(いい方法があれば、WordPress に取り込まれているはず...と思いたい )