WordPressの不要なhead内タグを削除するためのfunctions.php設定

WordPressでは、テーマ側で特段の設定をしていなくてもhead内に追加されるタグがあります。それらのタグの中には、多くの人にとっては必要のないものも含まれています。

そのままにしておいても特に問題はないとはいえ、不要なコードが記述されていると気持ちが悪いので削除することにしました。

スポンサーリンク

自動でheadに追加される不要タグ

<meta name="generator" content="WordPress 4.6.1">
<link rel="shortlink" href="https://kumalog.com/?p=123">
<link rel="EditURI" type="application/wlwmanifest+xml" title="RSD" href="https://kumalog.com/wp-includes/wlwmanifest.xml">
<link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://kumalog.com/xmlrpc.php?rsd">
<script type="text/javascript">
window._wpemojiSettings = {"baseUrl":"http:\/\/s.w.org/images/core/emoji/72x72/",
~~~
</script>
<style type="text/css">
img.wp-smiley,
img.emoji {
    display: inline !important;
    border: none !important;
    box-shadow: none !important;
    height: 1em !important;
    width: 1em !important;
    margin: 0 .07em !important;
    vertical-align: -0.1em !important;
    background: none !important;
    padding: 0 !important;
}
</style>

自動でこのようなコードが挿入されてしまいます。

head内の不要タグ削除方法

remove_action( 'wp_head', 'wp_generator' );
remove_action( 'wp_head', 'wp_shortlink_wp_head' );
remove_action( 'template_redirect','wp_shortlink_header', 11, 0 );
remove_action( 'wp_head', 'wlwmanifest_link' );
remove_action( 'wp_head', 'rsd_link' );
function disable_emoji() {
     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_action( 'init', 'disable_emoji' );

このブログでは、上記のコードをfunctions.phpに追加することでhead内の不要なタグを削除しています。以下の項目で詳しく解説します。

wp_generatorの削除

remove_action( 'wp_head', 'wp_generator' );

wp_generatorはWordPressのバージョンを明示するものです。バージョンを明らかにするのはセキュリティ上よろしくないので削除したほうが良いでしょう。

wp_shortlink_wp_headとwp_shortlink_headerの削除

remove_action( 'wp_head', 'wp_shortlink_wp_head' );
remove_action( 'template_redirect','wp_shortlink_header', 11, 0 );

wp_shortlink_wp_headは個別記事用の短縮リンクを明示するものです。ほとんど利用されていない情報ですし、そもそも不要なので削除します。短縮リンクの情報はHTTPヘッダにも存在しますので、これも削除します(2行目のコード)。

wlwmanifest_linkの削除

remove_action( 'wp_head', 'wlwmanifest_link' );

wlwmanifest_linkはWindows Live Writerというブログエディターにより記事を作成する場合に利用されるものです。Windows Live Writerを使っていないのであれば不要です。

rsd_linkの削除

remove_action( 'wp_head', 'rsd_link' );

rsd_linkは外部のアプリケーション(スマホアプリ等)から記事作成などを行う場合に利用される情報です。ブログの操作をブラウザのみで行っている場合には不要です。

絵文字関連コードの削除

function disable_emoji() {
     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_action( 'init', 'disable_emoji' );

このコードを追加すると、Unicode絵文字を自動で画像に置き換えるスクリプトが削除されます。

Unicode絵文字は表示する環境によって見え方に差異が生じる場合があります。これを防ぐため、WordPressはUnicode絵文字を画像に置き換える処理を行うわけです。

絵文字を使わないのであれば、削除しても問題ありません。

[追記]絵文字を含んだSNSのコンテンツをブログに埋め込むケースがあるので、絵文字関連コードの削除は行わないようにしました。

補足

<link rel="prev" href="https://kumalog.com/">
<link rel="next" href="https://kumalog.com/page/3/">

ページネーションを利用している場合、そのページの前後のページを明示する上記のコードが挿入されます。Googleで検索してみると、このコードが不要であるとして削除を推奨するページもあるようです。

ところが、この情報はGoogleによって利用されるので削除すべきではありません。詳しくは以下のページをご覧ください。
Google、ページネーション問題を解決するrel=“next”タグとrel=“prev”タグをサポート開始 | 海外SEO情報ブログ