wp_head()で出力される不要なタグを除去

WordPressのheadに記述する事が必要なwp_head()

テーマやプラグインの動作に必要なものを読み込んでくれる便利な関数である反面、不要なものもすべて読みこんでしまいます。

WordPressサイトが必要以上に重くならないよう、wp_head()の内容はきちんと調整しましょう。

目次

wp_headで不要なコードを削除する記述例

一般的なWordPressサイトでは不要となるケースが多いものを除去するためのコード一例です。

// RSSフィードのURL
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('wp_print_styles', 'print_emoji_styles', 10);

// アイコンフォント読み込み
add_action('wp_print_styles', 'my_deregister_styles', 100);
function my_deregister_styles() {
  wp_deregister_style('dashicons');
}

// REST APIのURL表示
remove_action('wp_head', 'rest_output_link_wp_head');

// 外部ブログツールからの投稿を受け入れ
remove_action('wp_head', 'rsd_link');
remove_action('wp_head', 'wlwmanifest_link');

// バージョン表記
remove_action('wp_head', 'wp_generator');

// 短縮URL
remove_action('wp_head', 'wp_shortlink_wp_head');

// ウィジェット「最近のコメント」の表示
function remove_recent_comment_css() {
    global $wp_widget_factory;
    remove_action( 'wp_head', array( $wp_widget_factory->widgets['WP_Widget_Recent_Comments'], 'recent_comments_style'));
}
add_action( 'widgets_init', 'remove_recent_comment_css');

// Google CDNでjQueryを読み込む
function my_enqueue_script() {
  wp_enqueue_script('jquery', '//ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js', array(), NULL, false);
}
add_action('wp_enqueue_scripts', 'my_enqueue_script');

基本的にはこちらで対応できますが、詳しく調整したい方は記事の後半で一つずつ解説していくので自分に合ったものになるよう記述を変えてみてください。

wp_headの役割と書き出されるコードまとめ

そもそもwp_head()はWordPress内で何をしているのか。

wp_head()</head>タグの直前で読み込まれることが推奨されています。
要は「headタグ内に読み込むべきものを出力する」関数です。

もちろんWordPress本体が必要なCSSやJSを読み込むほか、テーマ側で指定されたもの、プラグイン側で指定されたものをまとめて読み込んでくれます。

ただし、その中には不要なものもあるので、状況に応じて除外していく必要があります。

デフォルトで読み込まれるもの

現在のWordPress最新バージョン(5.8.1)において、記事ページ(single.php)を表示するときにwp_head関数はデフォルトで下記を読み込みます。

<meta name='robots' content='max-image-preview:large' />
<link rel='dns-prefetch' href='//s.w.org' />
<link rel="alternate" type="application/rss+xml" title="Miyachi Labo » サンプル記事 のコメントのフィード" href="http://xxxxx.com/xxxxxx/sample-post/feed/" />
<script type="text/javascript">
  window._wpemojiSettings = {
    "baseUrl": "https:\/\/s.w.org\/images\/core\/emoji\/13.1.0\/72x72\/",
    "ext": ".png",
    "svgUrl": "https:\/\/s.w.org\/images\/core\/emoji\/13.1.0\/svg\/",
    "svgExt": ".svg",
    "source": {
      "concatemoji": "http:\/\/xxxxx.com\/xxxxxx\/wp-includes\/js\/wp-emoji-release.min.js?ver=5.8.1"
    }
  };
  ! function(e, a, t) {
    var n, r, o, i = a.createElement("canvas"),
      p = i.getContext && i.getContext("2d");

    function s(e, t) {
      var a = String.fromCharCode;
      p.clearRect(0, 0, i.width, i.height), p.fillText(a.apply(this, e), 0, 0);
      e = i.toDataURL();
      return p.clearRect(0, 0, i.width, i.height), p.fillText(a.apply(this, t), 0, 0), e === i.toDataURL()
    }

    function c(e) {
      var t = a.createElement("script");
      t.src = e, t.defer = t.type = "text/javascript", a.getElementsByTagName("head")[0].appendChild(t)
    }
    for (o = Array("flag", "emoji"), t.supports = {
        everything: !0,
        everythingExceptFlag: !0
      }, r = 0; r < o.length; r++) t.supports[o[r]] = function(e) {
      if (!p || !p.fillText) return !1;
      switch (p.textBaseline = "top", p.font = "600 32px Arial", e) {
        case "flag":
          return s([127987, 65039, 8205, 9895, 65039], [127987, 65039, 8203, 9895, 65039]) ? !1 : !s([55356, 56826, 55356, 56819], [55356, 56826, 8203, 55356, 56819]) && !s([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 !s([10084, 65039, 8205, 55357, 56613], [10084, 65039, 8203, 55357, 56613])
      }
      return !1
    }(o[r]), t.supports.everything = t.supports.everything && t.supports[o[r]], "flag" !== o[r] && (t.supports.everythingExceptFlag = t.supports.everythingExceptFlag && t.supports[o[r]]);
    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()
    })), (n = t.source || {}).concatemoji ? c(n.concatemoji) : n.wpemoji && n.twemoji && (c(n.twemoji), c(n.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>
<link rel='stylesheet' id='dashicons-css' href='http://xxxxx.com/xxxxxx/wp-includes/css/dashicons.min.css?ver=5.8.1' type='text/css' media='all' />
<link rel='stylesheet' id='admin-bar-css' href='http://xxxxx.com/xxxxxx/wp-includes/css/admin-bar.min.css?ver=5.8.1' type='text/css' media='all' />
<link rel='stylesheet' id='wp-block-library-css' href='http://xxxxx.com/xxxxxx/wp-includes/css/dist/block-library/style.min.css?ver=5.8.1' type='text/css' media='all' />
<link rel="https://api.w.org/" href="http://xxxxx.com/xxxxxx/wp-json/" />
<link rel="alternate" type="application/json" href="http://xxxxx.com/xxxxxx/wp-json/wp/v2/posts/1" />
<link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://xxxxx.com/xxxxxx/xmlrpc.php?rsd" />
<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="http://xxxxx.com/xxxxxx/wp-includes/wlwmanifest.xml" />
<meta name="generator" content="WordPress 5.8.1" />
<link rel="canonical" href="http://xxxxx.com/xxxxxx/hello-world/" />
<link rel='shortlink' href='http://xxxxx.com/xxxxxx/?p=1' />
<link rel="alternate" type="application/json+oembed" href="http://xxxxx.com/xxxxxx/wp-json/oembed/1.0/embed?url=http%3A%2F%2Fxxxxx.com%2Fxxxxxx%2Fhello-world%2F" />
<link rel="alternate" type="text/xml+oembed" href="http://xxxxx.com/xxxxxx/wp-json/oembed/1.0/embed?url=http%3A%2F%2Fxxxxx.com%2Fxxxxxx%2Fhello-world%2F&format=xml" />
<style type="text/css">
  .recentcomments a {
    display: inline !important;
    padding: 0 !important;
    margin: 0 !important;
  }
</style>
<style type="text/css" media="print">
  #wpadminbar {
    display: none;
  }
</style>
<style type="text/css" media="screen">
  html {
    margin-top: 32px !important;
  }

  * html body {
    margin-top: 32px !important;
  }

  @media screen and (max-width: 782px) {
    html {
      margin-top: 46px !important;
    }

    * html body {
      margin-top: 46px !important;
    }
  }
</style>

かなり多いですよね。
不要なコードも含まれているので、サイトの高速化を考えたときにはきちんと除外設定していきましょう。

出力されるコードをひとつずつ「何をしているのか」と除外するコードをまとめていきます。

wp_headで書き出される不要なコードを除外する方法

wp_head()の中身を調整するためには、functions.phpに除外するためのコードを記述する必要があります。

Googleのスニペット表示の制御

<meta name='robots' content='max-image-preview:large' />

上記のmetaタグはGoogleの検索結果におけるスニペット表示のための制御方法を決定しているタグです。

検索結果のページに対して表示されるプレビューコンテンツを、より細かく設定できるようになります。

Google 検索におけるコンテンツのプレビューをもっと制御できるようになります

ページ内の画像が検索結果のプレビューにおいて最大サイズで表示されるように設定しています。

逆にこちらは必要なタグなのであえて除外することはないと思いますが、もし除外したいときは下記PHPにて可能です。

remove_action('wp_robots', 'wp_robots_max_image_preview_large');
WordPress Developer Resources
wp_robots_max_image_preview_large() | Function | WordPress Developer Resources Adds ‘max-image-preview:large’ to the robots meta tag.

ページの読み込み速度向上

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

Resource Hintsという手法を使って、リソースを先読みすることで、ページ遷移したときの表示速度向上をさせるものです。

こちらは有益なタグなので除外することはほぼ無いと思いますが、除外するには下記コードでOK。

remove_action('wp_head', 'wp_resource_hints', 2);
WordPress Developer Resources
wp_resource_hints() | Function | WordPress Developer Resources Prints resource hints to browsers for pre-fetching, pre-rendering and pre-connecting to web sites.

RSSフィードのURL

<link rel="alternate" type="application/rss+xml" title="Miyachi Labo » サンプル記事 のコメントのフィード" href="http://xxxxx.com/xxxxxx/sample-post/feed/" />

RSSフィード用のURLを表示しています。

使用しない場合は無効化してしまってOKです。

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

絵文字を利用できるように調整

<script type="text/javascript">
  window._wpemojiSettings = {
    "baseUrl": "https:\/\/s.w.org\/images\/core\/emoji\/13.1.0\/72x72\/",
    "ext": ".png",
    "svgUrl": "https:\/\/s.w.org\/images\/core\/emoji\/13.1.0\/svg\/",
    "svgExt": ".svg",
    "source": {
      "concatemoji": "http:\/\/xxxxx.com\/xxxxxx\/wp-includes\/js\/wp-emoji-release.min.js?ver=5.8.1"
    }
  };
  ! function(e, a, t) {
    var n, r, o, i = a.createElement("canvas"),
      p = i.getContext && i.getContext("2d");

    function s(e, t) {
      var a = String.fromCharCode;
      p.clearRect(0, 0, i.width, i.height), p.fillText(a.apply(this, e), 0, 0);
      e = i.toDataURL();
      return p.clearRect(0, 0, i.width, i.height), p.fillText(a.apply(this, t), 0, 0), e === i.toDataURL()
    }

    function c(e) {
      var t = a.createElement("script");
      t.src = e, t.defer = t.type = "text/javascript", a.getElementsByTagName("head")[0].appendChild(t)
    }
    for (o = Array("flag", "emoji"), t.supports = {
        everything: !0,
        everythingExceptFlag: !0
      }, r = 0; r < o.length; r++) t.supports[o[r]] = function(e) {
      if (!p || !p.fillText) return !1;
      switch (p.textBaseline = "top", p.font = "600 32px Arial", e) {
        case "flag":
          return s([127987, 65039, 8205, 9895, 65039], [127987, 65039, 8203, 9895, 65039]) ? !1 : !s([55356, 56826, 55356, 56819], [55356, 56826, 8203, 55356, 56819]) && !s([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 !s([10084, 65039, 8205, 55357, 56613], [10084, 65039, 8203, 55357, 56613])
      }
      return !1
    }(o[r]), t.supports.everything = t.supports.everything && t.supports[o[r]], "flag" !== o[r] && (t.supports.everythingExceptFlag = t.supports.everythingExceptFlag && t.supports[o[r]]);
    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()
    })), (n = t.source || {}).concatemoji ? c(n.concatemoji) : n.wpemoji && n.twemoji && (c(n.twemoji), c(n.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>

上記のコードで読み込まれているJSとCSSにて、絵文字が使えるように設定されています。

/hcブログ内で絵文字を使わない人が大多数だと思うので、不要な人は下記コードにて消してしまいましょう。

remove_action('wp_head', 'print_emoji_detection_script', 7);
remove_action('wp_print_styles', 'print_emoji_styles', 10);

アイコンフォントの読み込み

<link rel='stylesheet' id='dashicons-css'  href='http://xxxxx.com/xxxxxx/wp-includes/css/dashicons.min.css?ver=5.8.1' type='text/css' media='all' />

WordPressが公式で採用しているアイコンフォント「Dashicons」。

WordPress Developer Resources
Dashicons | WordPress Developer Resources Dashicons is the official icon font of the WordPress admin as of 3.8. The Dashicons project is no longer accepting icon requests. Here's…

管理画面のメニューアイコンに使われているので、見知ったものも多いでしょう。

実は、管理画面外でも以下のようにダッシュアイコンを利用できます。

<!-- WordPressアイコンを表示 -->
<i class="dashicons dashicons-wordpress"></i>

ただし、管理画面外でアイコンを使わないときは読み込み不要なので以下のコードで除外してしまいましょう。

add_action('wp_print_styles', 'my_deregister_styles', 100);
function my_deregister_styles() {
  wp_deregister_style('dashicons');
}

ただし、管理画面にログインしていないときは読み込まれないのであまり気にする必要はないかもしれません。

管理バー(アドミンバー)の制御

<style type="text/css" media="print">#wpadminbar { display:none; }</style>

WEBページが印刷された(PDFなどで保存された)場合に管理バーを含ませないようにするためのCSSです。

<link rel='stylesheet' id='admin-bar-css'  href='http://xxxxx.com/xxxxxx/wp-includes/css/admin-bar.min.css?ver=5.8.1' type='text/css' media='all' />
<style type="text/css" media="screen">
	html { margin-top: 32px !important; }
	* html body { margin-top: 32px !important; }
	@media screen and ( max-width: 782px ) {
		html { margin-top: 46px !important; }
		* html body { margin-top: 46px !important; }
	}
</style>

加えて、上記CSSにて管理バーのデザインをしています。

調べたのですが、これらを直接除外するためのコードが見当たりませんでした。

ただしDashiconと同様にログインしていないときは読み込まれないので問題ないかと思います。

ブロックエディタ(Gutenberg)のためのCSS

<link rel='stylesheet' id='wp-block-library-css'  href='http://xxxxx.com/xxxxxx/wp-includes/css/dist/block-library/style.min.css?ver=5.8.1' type='text/css' media='all' />

ブロックエディタ(Gutenberg)を使って入力されたコンテンツを出力するときに必要なCSSを読み込んでいます。

もしサイトでブロックエディタを使用せず、クラシックエディタのみということであれば除外してしまってOKです。

除外するには下記コードとなります。

function remove_editor_style() {
  wp_dequeue_style('wp-block-library');
}
add_action('wp_enqueue_scripts', 'remove_editor_style');

REST APIのURL表示

<link rel="https://api.w.org/" href="http://xxxxx.com/xxxxxx/wp-json/" /> 

WordPress ver.4.7意向はREST APIが搭載されており、APIを使ってサイトコンテンツの操作が可能です。

そのためのURLをheadタグ内に埋め込みたくない場合は、下記コードでOK。

remove_action('wp_head', 'rest_output_link_wp_head');

外部コンテンツの埋め込み

<link rel="alternate" type="application/json+oembed" href="http://xxxxx.com/xxxxxx/wp-json/oembed/1.0/embed?url=http%3A%2F%2Fxxxxx.com%2Fxxxxxx%2Fhello-world%2F" />
<link rel="alternate" type="text/xml+oembed" href="http://xxxxx.com/xxxxxx/wp-json/oembed/1.0/embed?url=http%3A%2F%2Fxxxxx.com%2Fxxxxxx%2Fhello-world%2F&format=xml" />

サイト内にTwitterやYouTubeなどの外部コンテンツを埋め込むときに必要な機能を読み込んでいます。

もし外部コンテンツの埋め込みが必要ないときは下記をfunctions.phpに書いておきましょう。

remove_action('wp_head', 'wp_oembed_add_discovery_links');

外部ブログツールからの投稿を受け入れ

<link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://xxxxx.com/xxxxxx/xmlrpc.php?rsd" />
<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="http://xxxxx.com/xxxxxx/wp-includes/wlwmanifest.xml" />

EditURI(1行目)は外部の投稿ツールからWordPressサイトへ記事を投稿するために必要なものです。

次のwlwmanifest(2行目)は、マイクロソフトのWindows Live Writerからの投稿を受け入れるためのもの。

一定数の利用者がいるようですが、不要なケースも多いはず。

必要以上の読み込みをしないよう、外部ツールを利用していないときは下記をfunctions.phpに記述しておきましょう。

remove_action('wp_head', 'rsd_link');
remove_action('wp_head', 'wlwmanifest_link');

バージョン表記

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

使用しているWordPressのバージョンを出力しています。

これは「削除してもよい」ではなく、むしろ「削除するべき」ものです。

サイトを攻撃したい人からすれば、バージョンがわかれば攻撃しやすくなるのであらかじめ表記しないほうが適切なんですね。

下記コードにて除外しておきましょう。

remove_action('wp_head', 'wp_generator');

カノニカルURLの出力

<link rel="canonical" href="http://xxxxx.com/xxxxxx/hello-world/" />

ページURLの正規化のため、カノニカルURLが埋め込まれています。

不要な場合、削除するためには下記コードでOK。

remove_action('wp_head', 'rel_canonical');

短縮URLの出力

<link rel='shortlink' href='http://xxxxx.com/xxxxxx/?p=1' />

ページにアクセスするための短縮URLを埋め込んでいます。

不要なら下記で削除できます。

remove_action('wp_head', 'wp_shortlink_wp_head');

ウィジェット「最近のコメント」の表示

<style type="text/css">.recentcomments a{display:inline !important;padding:0 !important;margin:0 !important;}</style>

ウィジェットにて「最近のコメント」を利用している場合、表示用にCSSが読み込まれます。

ただしWordPressでテーマを自作しているときは、独自のコメント表示用ウィジェットを作成するか、もしくはデフォルトウィジェットのCSSを使わずにデザインを作っているかと思います。

その場合、デフォルトのCSSは邪魔なので消してしまいましょう。

function remove_recent_comment_css() {
    global $wp_widget_factory;
    remove_action( 'wp_head', array( $wp_widget_factory->widgets['WP_Widget_Recent_Comments'], 'recent_comments_style'));
}
add_action( 'widgets_init', 'remove_recent_comment_css');

特定のプラグインのCSSを読み込まないようにする

wp_head()ではデフォルト設定のもの以外に、プラグイン側で設定されたCSSが読み込まれることがあります。

ただしプラグインが出力する部分を自分で用意したCSSでデザインしている場合は、プラグインのCSSは不要ですよね。

読み込み速度向上を考えたときに、不要なCSSは読み込みたくないもの。

その場合は、下記コードにて除外することが可能です。

function delete_plugin_files() {
    wp_dequeue_style('xxxxxxxx');
}
add_action( 'wp_enqueue_scripts', 'delete_plugin_files' );

xxxxxxxxの部分は、除外したいプラグインに応じて書き換えてください。

プラグインが埋め込むlinkタグのid部分を見れば判断ができます。

たとえば、bbPressという掲示板をつくるためのプラグインを導入した場合、下記のようにCSSが読み込まれます。

<link rel='stylesheet' id='bbp-default-css'  href='http://xxxxx.com/xxxxx/wp-content/plugins/bbpress/templates/default/css/bbpress.min.css?ver=2.6.6' type='text/css' media='all' />

idがbbp-default-cssとなっているので、除外するためのPHPは以下の通りとなります。

function delete_plugin_files() {
    wp_dequeue_style('bbp-default');
}
add_action( 'wp_enqueue_scripts', 'delete_plugin_files' );

jQueryの読み込みをさせない

実はwp_head()ではデフォルトでjQueryを読み込んでいますが、サイトの軽量化を考えたときにGoogleにホストされているCDNにて読み込んだ方がよいですよね。

二重でjQueryを読み込まないために、下記コードにてデフォルトの方を無効化しておく必要があります。

function remove_default_jquery() {
  if ( !is_admin() ) { wp_deregister_script( 'jquery' ); }
}
add_action('init', 'remove_default_jquery');

その上で、改めて下記のようにGoogle CDNにてjQueryを読み込んでください。

function my_enqueue_script() {
  wp_enqueue_script('jquery', '//ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js', array(), NULL, false);
}
add_action('wp_enqueue_scripts', 'my_enqueue_script');

wp_headの不要な部分を除去するコードまとめ

すべてを除外して調整するには下記コードでOK。

// Googleスニペット表示の制御
remove_action('wp_robots', 'wp_robots_max_image_preview_large');

// ページの読み込み速度向上
remove_action('wp_head', 'wp_resource_hints', 2);

// RSSフィードのURL
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('wp_print_styles', 'print_emoji_styles', 10);

// アイコンフォント読み込み
add_action('wp_print_styles', 'my_deregister_styles', 100);
function my_deregister_styles() {
  wp_deregister_style('dashicons');
}

// ブロックエディタのためのCSS
function remove_editor_style() {
  wp_dequeue_style('wp-block-library');
}
add_action('wp_enqueue_scripts', 'remove_editor_style');

// REST APIのURL表示
remove_action('wp_head', 'rest_output_link_wp_head');

// 外部コンテンツの埋め込み
remove_action('wp_head', 'wp_oembed_add_discovery_links');

// 外部ブログツールからの投稿を受け入れ
remove_action('wp_head', 'rsd_link');
remove_action('wp_head', 'wlwmanifest_link');

// バージョン表記
remove_action('wp_head', 'wp_generator');

// カノニカルURL
remove_action('wp_head', 'rel_canonical');

// 短縮URL
remove_action('wp_head', 'wp_shortlink_wp_head');

// ウィジェット「最近のコメント」の表示
function remove_recent_comment_css() {
    global $wp_widget_factory;
    remove_action( 'wp_head', array( $wp_widget_factory->widgets['WP_Widget_Recent_Comments'], 'recent_comments_style'));
}
add_action( 'widgets_init', 'remove_recent_comment_css');

// Google CDNでjQueryを読み込む
function my_enqueue_script() {
  wp_enqueue_script('jquery', '//ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js', array(), NULL, false);
}
add_action('wp_enqueue_scripts', 'my_enqueue_script');

ただし、一部有益なものも無効化してしまうので、私は必要なものだけにして以下で利用しています。

// RSSフィードのURL
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('wp_print_styles', 'print_emoji_styles', 10);

// アイコンフォント読み込み
add_action('wp_print_styles', 'my_deregister_styles', 100);
function my_deregister_styles() {
  wp_deregister_style('dashicons');
}

// REST APIのURL表示
remove_action('wp_head', 'rest_output_link_wp_head');

// 外部ブログツールからの投稿を受け入れ
remove_action('wp_head', 'rsd_link');
remove_action('wp_head', 'wlwmanifest_link');

// バージョン表記
remove_action('wp_head', 'wp_generator');

// 短縮URL
remove_action('wp_head', 'wp_shortlink_wp_head');

// ウィジェット「最近のコメント」の表示
function remove_recent_comment_css() {
    global $wp_widget_factory;
    remove_action( 'wp_head', array( $wp_widget_factory->widgets['WP_Widget_Recent_Comments'], 'recent_comments_style'));
}
add_action( 'widgets_init', 'remove_recent_comment_css');

// Google CDNでjQueryを読み込む
function my_enqueue_script() {
  wp_enqueue_script('jquery', '//ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js', array(), NULL, false);
}
add_action('wp_enqueue_scripts', 'my_enqueue_script');

ページの読み込み速度向上とセキュリティ対策にもなるので、きちんとwp_head()の中身は調整するようにしましょう。

この記事が気に入ったら
いいね または フォローしてね!

SHARE

コメント

コメントする

目次
閉じる