WordPressの不必要なヘッダー情報をプラグインなしで削除し、セキュリティを高めて速度改善をする方法をまとめました。

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 で計測し、速度改善しました。

改修前

改修後

この記事のご感想やコメントはこちら

メールアドレスが公開されることはありません。 が付いている欄は必須項目です