WordPressのヘッダーには、掲載しないほうがよい情報がいくつかあります。
これらを削除することで、脆弱性への対応や速度改善などにつながります。
プラグインを使わずにテーマフォルダにあるfunctions.phpに削除処理を記述することで、出力しないようにできます。
不要なヘッダー情報を削除することで
- 表示速度の改善
- コードに対するコンテンツ内容の比率が増加
- 検索エンジンBotの読み込み改善
といった利点があります。
いくつかのヘッダー情報と、それらの削除方法を列挙していきます。
WordPressのバージョン情報
コンテンツ
<meta name="generator" content="WordPress 4.9.2">
WordPressのバージョン情報は、下記コードをfunctions.phpに追記で削除します。
function remove_version() {
return '';
}
add_filter('the_generator', 'remove_version');
または
remove_action('wp_head', 'wp_generator');
XML-RPC RSDリンクの削除
XML-RPCは通信プロトコルのひとつで、XMLデータをもちいてHTTPSで通信を行う、異なるシステム間の通信を行うための仕様です。
サードパーティツール等からWordpressへアクセスをするなどが可能です。XML-RPCを使用しない場合、機能を無効化しリンクの削除をしたほうが良いケースが多いです。
<link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://choppydays.com/xmlrpc.php?rsd">
上記のヘッダ情報の削除は、下記をfunctions.phpに記載します。
remove_action ('wp_head', 'rsd_link');
ショートリンクの削除
WordPressデフォルトのショートリンクもヘッダ情報に含まれます。脆弱性には関連しませんが、ヘッダ情報には不要のため削除します。下記をfunctions.phpに記載します。
remove_action( 'wp_head', 'wp_shortlink_wp_head');
静的なリソースのクエリパラメタの削除
ライブラリ等に付与するクエリパラメタは、リソースのバージョンの管理、またはライブラリを更新する際、同一ファイル名のケースではブラウザのキャッシュにより更新されないため、クエリパラメタの変更で更新することが可能です。
静的なリソースでは更新頻度が極めて低いので、削除が可能です。
下記をfunctions.phpに記載します。
function remove_query_string( $src ){
$parts = explode( '?ver', $src );
return $parts[0];
}
add_filter( 'script_loader_src', 'remove_query_string', 15, 1 );
add_filter( 'style_loader_src', 'remove_query_string', 15, 1 );
投稿記事のlink rel=”prev” link rel=”next” の削除
投稿記事の次の記事、前の記事のタグを出力します。こちらも不要であれば削除します。
remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0 );
wlwmanifestの削除
マイクロソフトのWindows Live Writerというブログ投稿ができるソフトウェアからの投稿を受け付けるための記載になります。このツールを使わない場合は不要なので削除します。
remove_action( 'wp_head', 'wlwmanifest_link' );
下記以降は、サイト運営で削除するかどうかを判断します。
api.w.orgリンクの削除
WordPress4.4から、REST API機能が搭載されました。WebサイトからAPIで情報を取り扱うことが可能です。サイトデータの取得の他、API認証でデータの更新、編集なども可能になります。
API経由でサイト操作を行う場合でなければ、削除します。Wordpressが改ざんされる原因にもなっており、不要であれば削除します。
下記コードをfunctions.phpに記載します。
remove_action('wp_head', 'rest_output_link_wp_head', 10);
remove_action('wp_head', 'wp_oembed_add_discovery_links', 10);
remove_action('template_redirect', 'rest_output_link_header', 11, 0);
絵文字関連のjsとcssの削除
WordPress バージョン4.2から絵文字が使えるようになりました。
絵文字を使用しない場合は削除します。
remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
ヘッダ情報ではありませんが、絵文字関連のCSSも削除します。
remove_action( 'wp_print_styles', 'print_emoji_styles' );
まとめ
上記コードのまとめを下記に記載します。
// ****** Choppydays Tips - Remove WordPress Header START ****** //
function remove_version() {
return '';
}
add_filter('the_generator', 'remove_version');
remove_action('wp_head', 'rest_output_link_wp_head', 10);
remove_action('wp_head', 'wp_oembed_add_discovery_links', 10);
remove_action('template_redirect', 'rest_output_link_header', 11, 0);
remove_action ('wp_head', 'rsd_link');
remove_action( 'wp_head', 'wlwmanifest_link');
remove_action( 'wp_head', 'wp_shortlink_wp_head');
function remove_query_string( $src ){
$parts = explode( '?ver', $src );
return $parts[0];
}
add_filter( 'script_loader_src', 'remove_query_string', 15, 1 );
add_filter( 'style_loader_src', 'remove_query_string', 15, 1 );
remove_action('wp_head', 'rest_output_link_wp_head', 10);
remove_action('wp_head', 'wp_oembed_add_discovery_links', 10);
remove_action('template_redirect', 'rest_output_link_header', 11, 0);
remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
// ***** Remove WordPress Header END ***** //
// ***** Remove WordPress CSS Start ***** //
remove_action( 'wp_print_styles', 'print_emoji_styles' );
// ***** Remove WordPress CSS END ***** //
実際にWordpress運営の当サイトをPageSpeed Insights で計測し、速度改善しました。
改修前
改修後