[PHP] echoされちゃう内容を変数に取得

背景

[Simplicity] cssやjsを更新したらすぐ反映されるようにする
Simplicityでテーマのcssなどを変更した時、キャッシュが残っているために更新が反映されず、その度にキャッシュを削除するのも面倒なので、ファイルを更新したら自動でキャッシュし直すようにする方法

上記の対応をしていたとき、
戻り値としてreturnしてもらって置換やらなんやらをしたかったのに、
律義にechoしてくれちゃう関数(wp_head())があり困ったので、
その対処法。

解決策

ob_start();         //出力バッファリングを有効にする
wp_head();          // echo
$wp_head = ob_get_contents();   // 変数に代入
ob_get_clean();     // バッファを削除

参考

ob_start、ob_get_contents関数でPHPの標準出力をバッファリング・変数に代入
標準出力をバッファリングし変数に代入することができるob_start()関数の解説。include()の処理をバッファリングすることで自由な場所に処理を記述することが可能。早い話がWordPressでテンプレートをincludeするときに便利に使えるよ。