【保存版】WordPress head内の不要タグ、削除方法まとめ

今回はWordPressのはき出すHTMLをキレイにする方法をご紹介します。

WordPressはデフォルトで<head>タグ内に様々な情報が書かれるように作られていますが、中には全く必要がないタグもあります。
これらの不要なタグは、普通は人の目に触れることはありませんので気にならないかもしれません。
しかし、それらを整理することで、実はSEOに対しても、ユーザーさんに対してもいいことがあります。

検索エンジンなどのロボット達はサイトを読み込む際、必ずHTMLを上から順に読んでいきます。
不要なタグが<head>タグ内にたくさんあると、ロボットにとっては読みづらいサイトになってしまいます。
ソースコードのメンテナンスを行い必要なタグ以外は削除しておくことで、ロボットが読みやすいソースなるべくプラグインを使わずに不要なタグを削除する方法をまとめました。

編集するファイル

具体的な削除方法ですが、WordPressのテーマファイルに含まれているfunction.phpというファイルに、phpのコードを追記するだけで削除することが可能です。

WordPerssの不要タグ

WordPressが純正で吐き出す不要なタグを表示にします。

meta name=”generator” の削除

meta generator は、文書の作成に使用したソフトウェア名を示すタグです。
つまり、『このページはWordPressで出来てますよ』ということを示すタグですが、通常は不要だと思いますので、削除で問題ないでしょう。

表示されているソースコード
<meta name="generator" content="Wordpress 5.2.2" />
コード言語: HTML、XML (xml)
function.phpに追記するソースコード
// generatorを非表示にする remove_action('wp_head', 'wp_generator');
コード言語: JavaScript (javascript)

EditURIは外部の投稿ツールからWordPressに記事を投稿する際に必要なタグですが、外部ツールを使用しない場合は、セキュリティ的に削除した方がいいです。

表示されているソースコード
<link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://www.site-domain.com/xmlrpc.php?rsd" />
コード言語: HTML、XML (xml)
function.phpに追記するソースコード
// EditURIを非表示にする remove_action('wp_head', 'rsd_link');
コード言語: JavaScript (javascript)

マイクロソフト製のブログ更新アプリの「Windows Live Writerウインドウズ ライブ ライター」からの投稿を受け付けるためのタグ。
このアプリを使ってWordPressに投稿を行わなければ不要なので削除して問題ありません。

表示されているソースコード
<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="http://vccw.dev/wp-includes/wlwmanifest.xml" />
コード言語: HTML、XML (xml)
function.phpに追記するソースコード
// wlwmanifestを非表示にする remove_action('wp_head', 'wlwmanifest_link');
コード言語: JavaScript (javascript)

WordPressはページ毎に短縮URLが出力されますが、短縮URLを使用しない場合は、不要なので削除で問題ありません。

表示されているソースコード
<link rel="shortlink" href="https://site-domain.com/?p=1" />
コード言語: HTML、XML (xml)
function.phpに追記するソースコード
// 短縮URLを非表示にする remove_action('wp_head', 'wp_shortlink_wp_head');
コード言語: JavaScript (javascript)

絵文字用のJavaScriptとCSSの削除

絵文字対応用のJavaScriptとCSSです。絵文字を使用しなければ不要なので削除可能です。

表示されているソースコード
<script type="text/javascript"> window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/2.3\/72x72\/","ext":".png","svgUrl":false,"svgExt":".svg","source":{"concatemoji":"http:\/\/vccw.dev\/wp-includes\/js\/wp-emoji-release.min.js?ver=4.8.2"}}; !function(a,b,c){function d(a){var b,c,d,e,f=String.fromCharCode;if(!k||!k.fillText)return!1;switch(k.clearRect(0,0,j.width,j.height),k.textBaseline="top",k.font="600 32px Arial",a){case"flag":return k.fillText(f(55356,56826,55356,56819),0,0),b=j.toDataURL(),k.clearRect(0,0,j.width,j.height),k.fillText(f(55356,56826,8203,55356,56819),0,0),c=j.toDataURL(),b!==c&&(k.clearRect(0,0,j.width,j.height),k.fillText(f(55356,57332,56128,56423,56128,56418,56128,56421,56128,56430,56128,56423,56128,56447),0,0),b=j.toDataURL(),k.clearRect(0,0,j.width,j.height),k.fillText(f(55356,57332,8203,56128,56423,8203,56128,56418,8203,56128,56421,8203,56128,56430,8203,56128,56423,8203,56128,56447),0,0),c=j.toDataURL(),b!==c);case"emoji4":return k.fillText(f(55358,56794,8205,9794,65039),0,0),d=j.toDataURL(),k.clearRect(0,0,j.width,j.height),k.fillText(f(55358,56794,8203,9794,65039),0,0),e=j.toDataURL(),d!==e}return!1}function e(a){var c=b.createElement("script");c.src=a,c.defer=c.type="text/javascript",b.getElementsByTagName("head")[0].appendChild(c)}var f,g,h,i,j=b.createElement("canvas"),k=j.getContext&&j.getContext("2d");for(i=Array("flag","emoji4"),c.supports={everything:!0,everythingExceptFlag:!0},h=0;h<i.length;h++)c.supports[i[h]]=d(i[h]),c.supports.everything=c.supports.everything&&c.supports[i[h]],"flag"!==i[h]&&(c.supports.everythingExceptFlag=c.supports.everythingExceptFlag&&c.supports[i[h]]);c.supports.everythingExceptFlag=c.supports.everythingExceptFlag&&!c.supports.flag,c.DOMReady=!1,c.readyCallback=function(){c.DOMReady=!0},c.supports.everything||(g=function(){c.readyCallback()},b.addEventListener?(b.addEventListener("DOMContentLoaded",g,!1),a.addEventListener("load",g,!1)):(a.attachEvent("onload",g),b.attachEvent("onreadystatechange",function(){"complete"===b.readyState&&c.readyCallback()})),f=c.source||{},f.concatemoji?e(f.concatemoji):f.wpemoji&&f.twemoji&&(e(f.twemoji),e(f.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>
コード言語: HTML、XML (xml)
function.phpに追記するソースコード
// 絵文字用JS・CSSを非表示にする 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');
コード言語: JavaScript (javascript)

投稿のRSSフィードの削除

RSSフィードのURLを表示している部分ですが、RSSフィードを使用しない、または見せたくないという場合は消しても問題ありません。

表示されているソースコード
<link title="フィード" href="https://www.site-domain.com/" rel="alternate" type="application/rss+xml" />
コード言語: HTML、XML (xml)
function.phpに追記するソースコード
// 投稿の RSS フィードリンクを非表示にする remove_action('wp_head', 'feed_links', 2);
コード言語: JavaScript (javascript)

コメントフィードの削除

コメントフィードのURLを表示している部分ですが、こちらもコメントフィードを使用しない、または見せたくないという場合は消しても問題ありません。

表示されているソースコード
<link title="コメントフィード" href="https://www.site-domain.com/" rel="alternate" type="application/rss+xml" />
コード言語: HTML、XML (xml)
function.phpに追記するソースコード
// コメントフィードを非表示にする remove_action('wp_head', 'feed_links_extra', 3);
コード言語: JavaScript (javascript)

JavaScriptやCSSに付与されるバージョン番号の削除

WordPressはJavaScriptやCSSに、WordPressやプラグインもしくはスクリプトそのもののバージョン番号を付与します。
ブラウザがこのバージョン番号が変わったことで、古いキャッシュを使わないようにするためのものです。
JavaScriptやCSSの更新が頻繁ではない場合は削除しても構わないでしょう。

表示されているソースコード
<link rel='stylesheet' href='https://site-dimain.com/wp-content/plugins/plugin-name/example.css?ver=1.0.0' media='all'> <script src='https://site-dimain.com/wp-content/themes/theme-name/js/example.js?ver=1.0.0' defer charset='UTF-8'></script>
コード言語: HTML、XML (xml)
function.phpに追記するソースコード
// WordPressのバージョンが付与されたver=〜 を非表示にする 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 );
コード言語: PHP (php)

WordPress4.6から実装された「DNS PrefetchingDNS プリフェッチ」を利用するための記述です。
DNSプリフェッチは、事前に外部ドメインDNSの名前解決しておくようにするもので、読み込み時間が若干早くなります。
WordPressでは、絵文字の保存ドメインをプリフェッチしていますが、絵文字を使用しないのであれば、不要なので削除しましょう。

表示されているソースコード
<link rel="dns-prefetch" href="//s.w.org" />
コード言語: HTML、XML (xml)
function.phpに追記するソースコード
// dns-prefetchを非表示にする add_filter( 'wp_resource_hints', 'remove_dns_prefetch', 10, 2 ); function remove_dns_prefetch( $hints, $relation_type ) { if ( 'dns-prefetch' === $relation_type ) { return array_diff( wp_dependencies_unique_hosts(), $hints ); } return $hints; }
コード言語: PHP (php)

WordPress4.4から実装された「REST API」を呼び出すための記述です。
これは、ウェブサイトをAPI化し、ユーザーがウェブサイトからデータを抜き出しやすくする仕組みで、外部のWebアプリケーションとの連携を取りやすくなります。
使う心当たりがなければ削除しましょう。

表示されているソースコード
<link rel="https://api.w.org/" href="https://site-dimain.com/wp-json/">
コード言語: HTML、XML (xml)
function.phpに追記するソースコード
// wp versionを非表示にする remove_action('wp_head','rest_output_link_wp_head');
コード言語: JavaScript (javascript)

oEmbed の削除

oEmbedはYouTubeやTwitterなどの外部コンテンツを埋め込むための機能です。
外部コンテンツを埋め込まない場合は消しましょう。

表示されているソースコード
<link rel="alternate" type="application/json+oembed" href="https://site-domain.com/wp-json/oembed/1.0/embed?url=http%3A%2F%2Fwww.poroanet.com%2Fblog%2Fwordpress%2F58.html" /> <link rel="alternate" type="text/xml+oembed" href="https://site-domain.com/wp-json/oembed/1.0/embed?url=http%3A%2F%2Fwww.poroanet.com%2Fblog%2Fwordpress%2F58.html&format=xml" />
コード言語: HTML、XML (xml)
function.phpに追記するソースコード
// oEmbedを非表示にする remove_action('wp_head','wp_oembed_add_discovery_links');
コード言語: JavaScript (javascript)

rel=”next” rel=”prev” の削除

rel=”next” rel=”prev”は、ページネーションした一連のページの繋がり関係を伝えるための仕組みですが、Googleは2019年にこのサポートの終了を発表しています。
こちらも不要になりましたので、削除で構いません。

表示されているソースコード
<link rel="prev" href="https://site-dimain.com/prev-page"> <link rel="next" href="https://site-dimain.com/next-page">
コード言語: HTML、XML (xml)
function.phpに追記するソースコード
//rel="next" rel="prev" を非表示にする remove_action('wp_head','adjacent_posts_rel_link_wp_head');
コード言語: JavaScript (javascript)

Gutenberg用CSSの削除

WordPress5で加えられたGutenberg用のCSSファイルです。
Gutenbergを使わずクラシックエディタに切り替えて使用している場合には削除可能です。

表示されているソースコード
<link rel='stylesheet' id='wp-block-library-css' href='https://site-dimain.com/wp-includes/css/dist/block-library/style.min.css?ver=5.0.3' type='text/css' media='all' />
コード言語: HTML、XML (xml)
function.phpに追記するソースコード
//Gutenberg用CSSを非表示にする function dequeue_plugins_style() { wp_dequeue_style('wp-block-library'); } add_action( 'wp_enqueue_scripts', 'dequeue_plugins_style', 9999);
コード言語: JavaScript (javascript)

canonicalの削除

SEOでよく使う、URLの正規化に必要なrel=”canonical”の表示ですが、テーマ側で挿入するなどの場合で削除したい場合は削除可能です。

表示されているソースコード
<link rel='canonical' href='https://<meta charset="utf-8">site-dimain.com/hoge/' />
コード言語: HTML、XML (xml)
function.phpに追記するソースコード
//<meta charset="utf-8">canonicalタグの削除 remove_action('wp_head', 'rel_canonical');
コード言語: JavaScript (javascript)

コピペ用まとめ

まとめとして、全ての不要タグを削除するためのコードを記載しておきます。

function.phpに追記するソースコード
// generatorを非表示にする remove_action('wp_head', 'wp_generator'); // EditURIを非表示にする remove_action('wp_head', 'rsd_link'); // wlwmanifestを非表示にする remove_action('wp_head', 'wlwmanifest_link'); // 短縮URLを非表示にする remove_action('wp_head', 'wp_shortlink_wp_head'); // 絵文字用JS・CSSを非表示にする 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'); // 投稿の RSS フィードリンクを非表示にする remove_action('wp_head', 'feed_links', 2); // コメントフィードを非表示にする remove_action('wp_head', 'feed_links_extra', 3); // WordPressのバージョンが付与されたver=〜 を非表示にする 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 ); // dns-prefetchを非表示にする add_filter( 'wp_resource_hints', 'remove_dns_prefetch', 10, 2 ); function remove_dns_prefetch( $hints, $relation_type ) { if ( 'dns-prefetch' === $relation_type ) { return array_diff( wp_dependencies_unique_hosts(), $hints ); } return $hints; } // wp versionを非表示にする remove_action('wp_head','rest_output_link_wp_head'); // oEmbedを非表示にする remove_action('wp_head','wp_oembed_add_discovery_links'); //rel="next" rel="prev" を非表示にする remove_action('wp_head','adjacent_posts_rel_link_wp_head'); //Gutenberg用CSSを非表示にする function dequeue_plugins_style() { wp_dequeue_style('wp-block-library'); } add_action( 'wp_enqueue_scripts', 'dequeue_plugins_style', 9999);
コード言語: PHP (php)

プラグイン派生のもので不要なタグ

WordPress自体が出力する不要タグ以外にも、プラグインが不要なタグを出力することがあります。

下記は一例ですが、紹介しておきます。

Yoast SEOで挿入されるrel=”next” rel=”prev” の削除

rel=”next” rel=”prev”はページネーション(ページ送り)を表すタグですが、Googleも見ていない要素ですので、基本的に削除可能です。

function.phpに追記するソースコード
// Yoast の prev を表示させない add_filter( 'wpseo_prev_rel_link', '__return_false' ); // Yoast の next を表示させない add_filter( 'wpseo_next_rel_link', '__return_false' );
コード言語: JavaScript (javascript)

Yoast SEOで挿入されるrel=”canonical”の削除

上述のrel=”canonical”の削除のYoast版です。

function.phpに追記するソースコード
// Yoast の canonical を表示させない add_filter( 'wpseo_canonical', '__return_false' );
コード言語: JavaScript (javascript)

Yoast SEOで挿入されるogタグの削除

Yoastが挿入する各種ogタグの削除コードです。

function.phpに追記するソースコード
// Yoast の og:type を表示させない add_filter( 'wpseo_opengraph_type', '__return_false' ); <meta charset="utf-8">// Yoast の og:url を表示させない add_filter( 'wpseo_opengraph_url', '__return_false' ); <meta charset="utf-8">// Yoast の og:site_name を表示させない add_filter( 'wpseo_opengraph_site_name', '__return_false' ); // Yoastの og:locale <meta charset="utf-8">を表示させない function remove_locale_presenter( $presenters ) { return array_map( function( $presenter ) { if ( ! $presenter instanceof Yoast\WP\SEO\Presenters\Open_Graph\Locale_Presenter ) { return $presenter; } }, $presenters ); } add_action( 'wpseo_frontend_presenters', 'remove_locale_presenter' );
コード言語: PHP (php)

Jetpackで自動挿入されるogタグの削除

Jetpackが挿入するogタグの削除コードです。

function.phpに追記するソースコード
// Jetpackで自動挿入されるogタグを非表示にする remove_action('wp_head','jetpack_og_tags');
コード言語: JavaScript (javascript)

Elemtorが読み込むGoogle Fontsの削除

ページビルダープラグインのElementorが読み込むGoogle Fontsの読み込みを停止します。
Google Fontsを使わないのであれば削除してしまった方が良いでしょう。
また、サブセット化などでサーバーに設置したにフォントデータを直接読み込む、もしくは非同期読み込みのために『webfontloader』を実装するなどの場合も、Elementorが挿入するGoogle Fontsは削除が必要になります。

function.phpに追記するソースコード
// Elemtorが読み込むGoogle Fontsの削除 add_filter( 'elementor/frontend/print_google_fonts', '__return_false' );
コード言語: JavaScript (javascript)

Elemtorが読み込むFont Awesomeの削除

同じくElementorが読み込むFont Awesomeの読み込みを停止します。

function.phpに追記するソースコード
// ElemtorのFont Awesome読み込みを停止 add_action( 'elementor/frontend/after_register_styles',function() { foreach( [ 'solid', 'regular', 'brands' ] as $style ) { wp_deregister_style( 'elementor-icons-fa-' . $style ); } }, 20 );;
コード言語: PHP (php)

WPML generator の削除

WordPress用多言語プラグイン、WPMLを利用していると自動挿入されるタグですが、こちらも単に『WPML使ってますよ』というだけのタグのため、基本的に不要です。

function.phpに追記するソースコード
// WPML generatorを非表示にする global $sitepress; remove_action( 'wp_head', array( $sitepress, 'meta_generator_tag' ) );
コード言語: PHP (php)

revslider generator の削除

スライダープラグイン Slider Revolutionを利用していると自動挿入されるタグですが、こちらも単に『Slider Revolution使ってますよ』というだけのタグのため、基本的に不要です。

function.phpに追記するソースコード
// revslider generatorを非表示にする function remove_revslider_meta_tag() { return ''; } add_filter( 'revslider_meta_generator', 'remove_revslider_meta_tag' );
コード言語: JavaScript (javascript)

おまけ

<head>タグ内に出力されるタグの仕組み

WordPressでは、header.phpにwp_head()という関数を記述するルールとなっていて、<head>タグ内に自動的にタグを出力できる仕組みになっています。
プラグイン等で使われるCSSやJSなどの関連ファイルもwp_head()を通して出力したりしています。

ですので、wp_head()を削除すれば、余分なタグも消えますが、必要なタグも消えてしまうので、wp_head()は消してはいけませんよ。

中村 一浩
中村 一浩
株式会社ココログラフ代表。SEO歴13年、対策実績970サイト以上。検索エンジンだけでなく検索ユーザーにまで最適化する、SEOの上位互換サービスSUOを提供。SEO / SUOの独自レポートツール、サチコレポート開発者。著書『現場のプロが教えるSEOの最新常識』
中村 一浩
中村 一浩
株式会社ココログラフ代表。SEO歴13年、対策実績970サイト以上。検索エンジンだけでなく検索ユーザーにまで最適化する、SEOの上位互換サービスSUOを提供。SEO / SUOの独自レポートツール、サチコレポート開発者。著書『現場のプロが教えるSEOの最新常識』