ハシウェブ

Web制作、プログラミングに関する情報を発信するブログ

【WordPress】head内の不要なタグをfunctions.phpで削除する方法

【WordPress】head内の不要なタグをfunctions.phpで削除する方法

「headタグ内によくわからないタグが多いので整理したい」
「headタグ内のタグを整理したいがどうすればいいかわからない」

悩み

こういった悩みにお答えします。

目次
  1. head内の不要なタグを削除する方法
    1. WordPressのバージョン情報削除
    2. WordPressのバージョン情報削除(パラメータ)
    3. フィードリンク削除
    4. 絵文字削除
    5. DNS Prefetch削除
    6. Embed削除
    7. EditURI削除
    8. wlwmanifest削除
    9. 前の記事、次の記事のリンク削除
    10. ショートリンクURLの削除
  2. まとめ

head内の不要なタグを削除する方法

まず、このブログでは、以下をfunctions.phpに記述しています。
これでhead内の不要なmetaタグを削除しています。
それぞれのテーマやプラグインの仕様次第では必要なものもあるので、コピペする場合は十分確認してからコピペしてください。

//wpのバージョン情報削除
remove_action('wp_head','wp_generator');

//wpのバージョン情報削除
function vc_remove_wp_ver_css_js( $src ) {
  if ( strpos( $src, 'ver=' . get_bloginfo( 'version' ) ) )
    $src = remove_query_arg( 'ver', $src );
  return $src;
}
add_filter( 'style_loader_src', 'vc_remove_wp_ver_css_js', 9999 );
add_filter( 'script_loader_src', 'vc_remove_wp_ver_css_js', 9999 );

//フィードリンク削除
remove_action('wp_head', 'feed_links', 2);
remove_action('wp_head', 'feed_links_extra', 3);

//絵文字削除
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' );

//DNS Prefetch削除
remove_action('wp_head', 'wp_resource_hints', 2);

//Embed削除
remove_action('wp_head', 'rest_output_link_wp_head');
remove_action('wp_head', 'wp_oembed_add_discovery_links');
remove_action('wp_head', 'wp_oembed_add_host_js');

//EditURI
remove_action('wp_head', 'rsd_link');

//wlwmanifest削除
remove_action('wp_head', 'wlwmanifest_link');

//前の記事、次の記事のリンク削除
remove_action('wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0);

// ショートリンクURLの削除
remove_action('wp_head', 'wp_shortlink_wp_head');

以下で、解説していきます。

WordPressのバージョン情報削除

WordPressかどうかはHTMLソースを見ればだいたいわかるのですが、あえてバージョンも含めて公開する必要はないので、表示しないようにしたほうがいいです。

<meta name="generator" content="WordPress 5.3.4" />

以下で削除します。

remove_action('wp_head','wp_generator');

WordPressのバージョン情報削除(パラメータ)

バージョン情報は出力されるCSSやJavaScriptにもパラメータとしてつけられます。
これも削除して表示させないようにしたほうがいいです。

<link rel='stylesheet' id='style-css'  href='(ドメイン)/(テーマ)/style.css?ver=5.3.4' type='text/css' media='all'>

以下で削除します。

function vc_remove_wp_ver_css_js( $src ) {
  if ( strpos( $src, 'ver=' . get_bloginfo( 'version' ) ) )
    $src = remove_query_arg( 'ver', $src );
  return $src;
}
add_filter( 'style_loader_src', 'vc_remove_wp_ver_css_js', 9999 );
add_filter( 'script_loader_src', 'vc_remove_wp_ver_css_js', 9999 );

フィードリンク削除

RSSフィード配信させる必要がなければ削除します。

<link rel="alternate" type="application/rss+xml" title="フィード" href="(ドメイン)/feed/" />
<link rel="alternate" type="application/rss+xml" title="コメントフィード" href="(ドメイン)/comments/feed/" />

以下で削除します。

remove_action('wp_head', 'feed_links', 2);
remove_action('wp_head', 'feed_links_extra', 3);

はじめからフィードリンクが表示されていないテーマの場合は、以下で表示させることができます。

add_theme_support( 'automatic-feed-links' );

絵文字削除

絵文字はCSSやJavaScriptが読み込まれるので、読み込み速度に影響してきます。また、長いのでhead内が汚く見えます。
ブログなどの投稿に絵文字を使用しない場合は削除したほうがいいです。

<script type="text/javascript">
  window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/12.0.0-1\/72x72\/","ext":".png","svgUrl":"https:\/\/s.w.org\/images\/core\/emoji\/12.0.0-1\/svg\/","svgExt":".svg","source":{"concatemoji":"http:\/\/(ドメイン)\/wp-includes\/js\/wp-emoji-release.min.js"}};
  !function(e,a,t){var r,n,o,i,p=a.createElement("canvas"),s=p.getContext&&p.getContext("2d");function c(e,t){var a=String.fromCharCode;s.clearRect(0,0,p.width,p.height),s.fillText(a.apply(this,e),0,0);var r=p.toDataURL();return s.clearRect(0,0,p.width,p.height),s.fillText(a.apply(this,t),0,0),r===p.toDataURL()}function l(e){if(!s||!s.fillText)return!1;switch(s.textBaseline="top",s.font="600 32px Arial",e){case"flag":return!c([127987,65039,8205,9895,65039],[127987,65039,8203,9895,65039])&&(!c([55356,56826,55356,56819],[55356,56826,8203,55356,56819])&&!c([55356,57332,56128,56423,56128,56418,56128,56421,56128,56430,56128,56423,56128,56447],[55356,57332,8203,56128,56423,8203,56128,56418,8203,56128,56421,8203,56128,56430,8203,56128,56423,8203,56128,56447]));case"emoji":return!c([55357,56424,55356,57342,8205,55358,56605,8205,55357,56424,55356,57340],[55357,56424,55356,57342,8203,55358,56605,8203,55357,56424,55356,57340])}return!1}function d(e){var t=a.createElement("script");t.src=e,t.defer=t.type="text/javascript",a.getElementsByTagName("head")[0].appendChild(t)}for(i=Array("flag","emoji"),t.supports={everything:!0,everythingExceptFlag:!0},o=0;o<i.length;o++)t.supports[i[o]]=l(i[o]),t.supports.everything=t.supports.everything&&t.supports[i[o]],"flag"!==i[o]&&(t.supports.everythingExceptFlag=t.supports.everythingExceptFlag&&t.supports[i[o]]);t.supports.everythingExceptFlag=t.supports.everythingExceptFlag&&!t.supports.flag,t.DOMReady=!1,t.readyCallback=function(){t.DOMReady=!0},t.supports.everything||(n=function(){t.readyCallback()},a.addEventListener?(a.addEventListener("DOMContentLoaded",n,!1),e.addEventListener("load",n,!1)):(e.attachEvent("onload",n),a.attachEvent("onreadystatechange",function(){"complete"===a.readyState&&t.readyCallback()})),(r=t.source||{}).concatemoji?d(r.concatemoji):r.wpemoji&&r.twemoji&&(d(r.twemoji),d(r.wpemoji)))}(window,document,window._wpemojiSettings);
</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>

以下で削除します。

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

DNS Prefetch削除

絵文字が不要であれば、DNS Prefetchも不要なので削除します。

<link rel='dns-prefetch' href='//s.w.org' />

以下で削除します。

remove_action('wp_head', 'wp_resource_hints', 2);

DNS Prefetchについては、以下で解説しています。

【SEO】Webページ高速化 リソースへの事前接続【Resource Hints】

Webページ速度改善について知りたいですか?この記事では、リソースへの事前接続に有効なResource Hints(dns-prefetch、preconnect、prefetch、prerender)について紹介しています。ぜひご覧ください。

Embed削除

ブログの情報を他ブログに埋め込みしやすくするもののようですが、そんなに一般的になっていないので必要ないと思います。

<link rel='https://api.w.org/' href='(ドメイン)/wp-json/' />
<link rel="alternate" type="application/json+oembed" href="(ドメイン)/wp-json/oembed/1.0/embed?url=(ドメイン)%2Fblog%2Fwp-head-cleanup%2F" />
<link rel="alternate" type="text/xml+oembed" href="(ドメイン)/wp-json/oembed/1.0/embed?url=(ドメイン)%2Fblog%2Fwp-head-cleanup%2F&format=xml" />

以下で削除します。

remove_action('wp_head', 'rest_output_link_wp_head');
remove_action('wp_head', 'wp_oembed_add_discovery_links');
remove_action('wp_head', 'wp_oembed_add_host_js');

oEmbedについては以下に詳しく書かれています。

WordPress4.4以降からhead内に挿入されるようになった不要なタグ「Embed」を削除。

先日WordPressがアップデートされて「Version 4.4」がリリースされました。いくつかの新しい機能が追加されましたが、今回から採用された「Embed」は比較的新しいシステムなのでご存じない方が多いと思います。...

EditURI削除

EditURIは、外部のツールから投稿をするときに使うもののようです。
そんなことする必要があるのかよくわかりませんが、不要なので削除します。

<link rel="EditURI" type="application/rsd+xml" title="RSD" href="(ドメイン)/xmlrpc.php?rsd" />

以下で削除します。

remove_action('wp_head', 'rsd_link');

wlwmanifest削除

Windows Live Writer(ウィンドウズ ライブ ライター)というソフトから投稿するときに使うもののようです。
ほとんどの場合、不要なので削除します。

<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="(ドメイン)/wp-includes/wlwmanifest.xml" /> 

以下で削除します。

remove_action('wp_head', 'wlwmanifest_link');

前の記事、次の記事のリンク削除

以前はSEOに重要なタグだったようですが、現在は重要ではなくなったようです。
表示させるかどうかは自己判断でお願いします。

<link rel='prev' title='(前の記事)' href='(前の記事のURL)' />
<link rel='next' title='(次の記事)' href='(次の記事のURL)' />

以下で削除します。

remove_action('wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0);

rel=prev/nextのサポートを終了については以下の記事に詳しく書かれています。

ショートリンクURLの削除

投稿IDでリンクできます。
headに表示させなくてもショートリンクURL自体はつかえるので、あえて表示させなくてもいいと思います。

<link rel='shortlink' href='(ドメイン)/?p=(投稿ID)' />

以下で削除します。

remove_action('wp_head', 'wp_shortlink_wp_head');

まとめ

head内の不要なタグをfunctions.phpで削除する方法を紹介しました。
単純にソースコードの見た目をすっきりさせるという目的もありますが、タグによっては読み込み速度に影響があるものもあるので、それぞれの環境に応じて不要なものは削除していくことをおすすめします。