概要説明
html内のソースのコメントを削除するためのカスタマイズ。制作時にわかりやすくするためにコメントを残しますが閲覧する人にとっては不要な情報であり、ユーザーに見られたくない情報などが含まれる場合もあります。意味のあるコメントもあるため不要なコメントだけを一括で削除するテクニックです。
~ 目次 ~
htmlソース内コメントを削除 ( IE判定は削除対象外 )
functions.php
/*----------------------------------------------------
表示前にフックして出力テキストを置換する
----------------------------------------------------*/
if ( !function_exists( 'final_processing_replace' ) ){
if ( !is_admin() ) {
function final_processing_replace($buffer) {
// IE判定用のコメントは除外してコメントを削除
$buffer = preg_replace('/<!--[^\[]*?-->/','',$buffer);
// 他にも処理したい内容がある場合はここに追加
return $buffer;
}
function buf_start() { ob_start('final_processing_replace'); }
function buf_end() {
if( ob_get_length() ){
ob_end_flush();
}
}
add_action('after_setup_theme', 'buf_start');
add_action('shutdown', 'buf_end');
}
}
IE判定用のコメントを考慮しない場合
// 全コメントを削除したい場合
$buffer = preg_replace('/<!--[\s\S]*?-->/','',$buffer);
出力前にフックして処理を実行という処理を複数定義して実行させるとエラーになる場合があるので他にも削除、置換したい処理がある場合は1つの処理内で複数記述を行うことをおすすめします。
htmlソースを確認して残したいコメント、表示したいコメントを確認
<meta charset="UTF-8"> <!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge"><![endif]--> <meta name="viewport" content="width=device-width"> <meta name="format-detection" content="telephone=no">
<!–[if IE]><meta http-equiv=”X-UA-Compatible” content=”IE=edge”><![endif]–>
がソースに内で確認できて他のコメントが非表示になっていたら成功です。
IE用のコメントを除外しておくことで表示させたいコメントの制御が行えます
<!--[SIDE_START]-->~<!--[SIDE_END]-->
[]を使用するとコメントの削除対象にならないため表示させたいコメントを残すことが出来ます。意図的にスクレイピングしやすいようにといった時には上記のような対応を行う場合があります。
他にも処理したい内容の補足 ( タブ、改行の削除 )
functions.php
// 他にも処理したい内容がある場合はここに追加
$buffer = str_replace("\t",'',$buffer); // タブ削除
$buffer = str_replace("\n\n","\n",$buffer); // 2回改行を1回に変更
上記のように他にも整形したい内容があれば記述を追加します



