WordPressでショートコード展開後に記事本文を置換する方法を紹介します。
WordPressで投稿本文のコンテンツを置換したいときは、add_filter()
関数を使ってthe_content
にフックさせます。
functions.phpに下記のコードを記述します。
function change_the_content($the_content) { $the_content = str_replace('aaa','bbb',$the_content); //HTML出力で置き換える処理 return $the_content; } add_filter('the_content', 'change_the_content');
しかし、これでは、ショートコード実行前の状態のコンテンツに対して処理を行うことになり、ショートコード展開後のコンテンツを置換したいときに使えません。
ショートコード展開後のコンテンツを置換するときは、add_filter()
の第3パラメーターのpriority
(関数を実行する順序)を指定します。priority
のデフォルト値は10になっています。
ショートコードを展開するフィルタの実行順序は11なので、それより後の12以上を指定することで、ショートコード展開後のコンテンツに対して、置換処理を実行することができます。
functions.phpに下記のコードを記述します。
function change_the_content($the_content) { $the_content = str_replace('aaa','bbb',$the_content); //HTML出力で置き換える処理 return $the_content; } add_filter('the_content', 'change_the_content', 12);
これで、ショートコード展開後のコンテンツに対して置換処理を行うことができます。
投稿本文だけではなく、WordPressで出力されるページのコード全体に対して置換処理を行いたい場合は、こちらの記事を参考にしてください。