WordPressですべての処理が終わった後にコンテンツを置換する方法(アクションフック)

WordPressですべての処理が終わった後にコンテンツを置換する方法(アクションフック)

Photo Anton Repponen via Unsplash

WordPressで投稿本文のコンテンツを置換したいときは、「the_content」にフックさせます。

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');

簡単ですね。

では、投稿本文ではなく、WordPressで出力されるHTML全体に対して置換処理を行いたいときはどうしたらいいのでしょうか?

投稿本文ではなく、WordPressですべての処理が終わった後、HTMLが出力される直前に置換処理を行い時は、「after_setup_theme」と「shutdown」のアクションフックを活用して次のよにします。

function call_back($buffer) {
  $buffer = str_replace('aaa','bbb',$buffer); //HTML出力で置き換える処理
  return $buffer;
}

function buf_start() { ob_start("call_back"); }
function buf_end() { ob_end_flush(); }

add_action('after_setup_theme', 'buf_start');
add_action('shutdown', 'buf_end');

これでWordPressで出力されるHTML全体を、好きなように変更することができます。

参考