WordPressのヘッダーから無駄なコードを除去する


お久しぶりです。
年末の納品ラッシュで、コラム更新が遅れてしまいました。

さて、今回のコラムでご紹介するTipsは、WordPressでサイトを作ったら、最初に行っておきたい設定です。

WordPressは、デフォルトで様々なコードが出力されるようになっていますが、中には不要なコードが出力されており、表示速度に影響してしまっている可能性があります。

Googleは表示速度をランキング変動における基準の1つとしていることを公表しておりますので、ご自分のサイトを確認して、対応していなければ不要なコードを除去することをお勧めいたします。

設定といっても、functions.phpに少し書き加えるだけで、面倒な事は一切ありませんのでご安心ください!

1. 絵文字出力用スクリプトの停止

WordPressは、4.2のバージョンからデフォルトで絵文字が使用できるようになりました。

このアップデートにより、絵文字を表示する為のスクリプトがwp_headにフックされ出力されているのですが、絵文字を使ったサイトをあまり見たことがありません…。

サイトの表示速度にも影響をするため、不要なスクリプトは非表示にしてしまいましょう。

remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );
remove_action( 'wp_print_styles', 'print_emoji_styles' );
remove_action( 'admin_print_styles', 'print_emoji_styles' );	
remove_filter( 'the_content_feed', 'wp_staticize_emoji' );
remove_filter( 'comment_text_rss', 'wp_staticize_emoji' );	
remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' );
add_filter( 'tiny_mce_plugins', 'disable_emojis_tinymce' );
add_filter( 'emoji_svg_url', '__return_false' );

2. バージョン情報を非表示

WordPressのバージョン情報を外部に公開するということは、セキュリティリスクに繋がりかねません。

SEO上の観点でも特に必要なものではなく、表示しているだけ無駄なので非表示にしてしまいましょう。

remove_action( 'wp_head', 'wp_generator' );

3. XML-RPCリンクを非表示

以前の記事でもご紹介致しましたが、XML-RPCを不正利用した攻撃手法が存在しており、こちらもセキュリティリスクになり得ますので、非表示にしましょう。

remove_action( 'wp_head', 'rsd_link' );

4. wlwmanifestリンク非表示

皆さんは、「Windows Live Writer」というソフトを使用したことがありますか?
または、一度でも聞いたことがありますか??

私はありません。

このソフトからWordPressへ記事を投稿する際に必要なmetaタグとなっておりますが、そもそもこのソフトを使用しないのであれば不要になりますので、こちらも削除しましょう。

remove_action( 'wp_head', 'wlwmanifest_link' );

5. shortlinkを非表示

WordPressは、クライアントからサーバーへ送信されたクエリーを解析し、該当する記事をデータベースから取得したのちクライアントへhtmlを送信しています。

shortlinkは、その記事の完全にユニークな投稿IDを示しておりますが、これもまたSEO上では不要なタグです。

remove_action('wp_head','wp_shortlink_wp_head' );

6. リソースごとのバージョンを非表示

WordPressでスクリプトを追加したい場合は、wp_enqueue_scriptというフックを利用する事が多いですが、これを利用した場合に出力されるタグには、WordPressのバージョン情報が付与されています。

上記の説明でもありましたが、WordPressに関わらずCMSなどのバージョンを外部に公表するという事は、セキュリティホールがある場所を教えてしまっているようなものです。

この情報はセキュリティリスクとなり得ますので、隠してしまいましょう。

function clear_resource_version( $src ){ 
	$parts = explode( '?ver', $src ); 
	return $parts[0]; 
} 
add_filter( 'script_loader_src', 'clear_resource_version', 15, 1 ); 
add_filter( 'style_loader_src', 'clear_resource_version', 15, 1 );

7. rel=”api.w.org”を非表示

WordPressのバージョン4.7以降、コアにREST APIが実装されました。

このタグは、REST APIを使用するためのタグですが、バージョン4.7でセキュリティ事故を起こした原因となる機能です。

もちろん、すぐアップデートにより改善されましたが、個人でブログを運営している方で、REST APIを活用している方はそう多くないと思います。

もしご自分のサイトで利用されていない方は、この機能ごと無効化してしまった方がセキュリティリスクを抑える事が出来ますので、無効化する事をお勧め致します。

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

まとめ

最後に、これまでに紹介したコードをまとめたものを記述しておきますので、ご自分のサイトで不要な箇所はコメントアウトするなどでご利用ください。

function clear_header_source() {

	remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
	remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );
	remove_action( 'wp_print_styles', 'print_emoji_styles' );
	remove_action( 'admin_print_styles', 'print_emoji_styles' );
	remove_filter( 'the_content_feed', 'wp_staticize_emoji' );
	remove_filter( 'comment_text_rss', 'wp_staticize_emoji' );
	remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' );
	add_filter( 'tiny_mce_plugins', 'disable_emojis_tinymce' );
	add_filter( 'emoji_svg_url', '__return_false' );
	remove_action( 'wp_head', 'wp_generator' );
	remove_action( 'wp_head', 'rsd_link' );
	remove_action( 'wp_head', 'wlwmanifest_link' );
	remove_action('wp_head','wp_shortlink_wp_head' );
	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);

}
add_action('init', 'clear_header_source', 10, 0);

function clear_resource_version( $src ){
	$parts = explode( '?ver', $src );
	return $parts[0];
}
add_filter( 'script_loader_src', 'clear_resource_version', 15, 1 );
add_filter( 'style_loader_src', 'clear_resource_version', 15, 1 );

不要なコードを削除することで表示速度の改善に繋がり、SEOにも良い影響がありますので、是非とも皆さんお試しください!