[WordPress] WordPress 4.6 からヘッダーに表示されるようになった DNS プリフェッチを非表示にする

WordPress 4.6 にアップデートしたら DNS プリフェッチ用のタグがヘッダーに表示されるようになっていたので削除する方法などを調べてみました。

DNSプリフェッチ用のリンクタグ

WordPress 4.6 から wp_resource_hints() 関数が使用できるようになりました。これにより wp_resource_hints() を通してヘッダーへ以下のリンクダグが表示されるようになっています。

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

これは、WordPress の絵文字を CDN しているドメインを DNS プリフェッチする設定のようです。

DNS プリフェッチとは

DNSプリフェッチを使用すると、外部ドメインの名前解決を事前に強制でできるため表示速度を上げることが可能です。詳しくは以下のリンク先が参考になります。

絵文字の DNS プリフェッチだけを削除したい場合

WordPress の絵文字機能をフックで外して使用していない場合も多いのではないでしょうか、その場合このリンクタグも必要ないため非表示にしてしまいたいです。その場合は functions.php へ以下の記述を追加します。

add_filter( 'emoji_svg_url', '__return_false' );

wp_resource_hints() を通して表示される DNS プリフェッチをすべて非表示にする

プラグインの関係か、サイトによっては絵文字以外の DNS プリフェッチが表示されていました。

は絵文字以外の DNS プリフェッチ

ウェブフォントや Bootstrap などの CDN は DNS プリフェッチされていた方がよいと思いますが、もし表示したくない場合は以下のように wp_resource_hints フィルターフックを使って非表示にすることができます。

functions.php などへ以下を記入して dns-prefetch として登録されているものを削除します。

function remove_dns_prefetch( $hints, $relation_type ) {
    if ( 'dns-prefetch' === $relation_type ) {
        return array_diff( wp_dependencies_unique_hosts(), $hints );
    }
    return $hints;
}
add_filter( 'wp_resource_hints', 'remove_dns_prefetch', 10, 2 );

これでヘッダーから DNS プリフェッチのタグがすべて削除できました。

3

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です