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

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

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

編集するファイル

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

WordPerssの不要タグ

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

meta name=’robots’ content=’max-image-preview:large’ の削除

meta robots は、検索エンジンをはじめとする、各種ロボットを制御するためのmetaタグです。
max-image-preview:large は『大きな画像プレビューを許可する』という指示で、WordPressの標準でこのタグが出力されます。meta robots の内容を変更するなどのカスタマイズを行う場合には、この出力は不要となりますので、削除してしまって問題ありません。

表示されているソースコード
<meta name='robots' content='max-image-preview:large' />Code language: HTML, XML (xml)
function.phpに追記するソースコード
// meta name='robots' content='max-image-preview:large' を非表示にする
remove_filter( 'wp_robots', 'wp_robots_max_image_preview_large' );Code language: JavaScript (javascript)

global-styles-inline-css の削除

WordPress 5.9から実装されたタグで、ブロックエディタ用のCSSがheadタグ内に出力されるようになりました。
ブロックエディタを使用しない場合、不要ですので削除可能です。

表示されているソースコード
<style id='global-styles-inline-css' type='text/css'>
body{--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgba(255,105,0,1) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--duotone--dark-grayscale: url('#wp-duotone-dark-grayscale');--wp--preset--duotone--grayscale: url('#wp-duotone-grayscale');--wp--preset--duotone--purple-yellow: url('#wp-duotone-purple-yellow');--wp--preset--duotone--blue-red: url('#wp-duotone-blue-red');--wp--preset--duotone--midnight: url('#wp-duotone-midnight');--wp--preset--duotone--magenta-yellow: url('#wp-duotone-magenta-yellow');--wp--preset--duotone--purple-green: url('#wp-duotone-purple-green');--wp--preset--duotone--blue-orange: url('#wp-duotone-blue-orange');--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}
</style>Code language: HTML, XML (xml)
function.phpに追記するソースコード
// global-styles-inline-css を非表示にする
add_action( 'wp_enqueue_scripts', 'remove_my_global_styles' );
function remove_my_global_styles() {
	wp_dequeue_style( 'global-styles' );
}Code language: JavaScript (javascript)

meta name=”generator” の削除

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

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

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

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

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

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

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

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

投稿のRSSフィードの削除

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

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

コメントフィードの削除

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

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

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

表示されているソースコード
<link rel="dns-prefetch" href="//s.w.org" />Code language: 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;
}Code language: PHP (php)

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

表示されているソースコード
<link rel="https://api.w.org/" href="https://site-dimain.com/wp-json/">Code language: HTML, XML (xml)
function.phpに追記するソースコード
// wp versionを非表示にする
remove_action('wp_head','rest_output_link_wp_head');Code language: 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" />Code language: HTML, XML (xml)
function.phpに追記するソースコード
// oEmbedを非表示にする
remove_action('wp_head','wp_oembed_add_discovery_links');Code language: 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">Code language: HTML, XML (xml)
function.phpに追記するソースコード
//rel="next" rel="prev" を非表示にする
remove_action('wp_head','adjacent_posts_rel_link_wp_head');Code language: 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' />Code language: 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);Code language: JavaScript (javascript)

canonicalの削除

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

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

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

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

同じく、テーマ側で挿入するなどの場合は、二重記述になってしますので削除しましょう。

function.phpに追記するソースコード
// Yoast の canonical を表示させない
add_filter( 'wpseo_canonical', '__return_false' );Code language: 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 YoastWPSEOPresentersOpen_GraphLocale_Presenter ) {
            return $presenter;
        }
    }, $presenters );
}
add_action( 'wpseo_frontend_presenters', 'remove_locale_presenter' );Code language: PHP (php)

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

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

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

Elementorが読み込む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' );Code language: JavaScript (javascript)

Elementorが読み込む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 );;Code language: PHP (php)

WPML generator の削除

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

function.phpに追記するソースコード
// WPML generatorを非表示にする
global $sitepress;
remove_action( 'wp_head', array( $sitepress, 'meta_generator_tag' ) );Code language: 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' );Code language: JavaScript (javascript)

おまけ

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

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

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

ではまた。