ワードプレスをカスタマイズする時にhead内のヘッダ情報に余計なデフォルトのワードプレスタグやメタ情報が残り、削除したい場合があるかもしれません。
このページでは、wp_head() を設定している場所、ファイルやgeneratorやwlwmanifest.xmlなどのhead内ヘッダ情報を非表示、削除する設定を紹介します。
wp_head() とは?wp_head()を編集できるファイル・場所
wp_head()
とは、Wordpressがデフォルトで用意しているヘッダー情報です。
WordPressのgeneratorやwlwmanifest.xmlなどのWordPressの設定やプラグインの設定情報はこのコードが必要になります。
<head>内の
<?php wp_head(); ?>
で読み込まれています。
wp_head()を設定しているファイルがわかれば、そこに記載してある箇所を削除すれば、非表示にできますが、そう簡単ではありません。
wp_head()の編集ファイル、場所はどこ?
wp_head() を吐き出しているファイルは、
/wp-includes/内にある
default-filters.php
です。
default-filters.php内の記載を編集、削除すれば、generatorやwlwmanifest.xmlなど特定のタグを非表示にできます。
ただし、ワードプレスのバージョンアップをすると、新しいファイルに置きかえられ、非表示にした設定が元に戻ってしまいます。
バージョンアップに影響なく非表示にする方法は2つあります。
wp_head()
を削除するか、generatorやwlwmanifest.xmlなどのhead内ヘッダ情報をfunctions.phpで非表示にする方法です。
プラグインを使用している場合はwp_head()のヘッダ情報を削除した影響でレイアウトが崩れて表示されたりプラグインが機能しない場合があります。
wp_head()のヘッダ情報の削除をプラグインやバージョンアップで影響させたくない場合はfunctions.phpで設定する必要があります。
functions.phpでwp_head()情報を非表示にする設定方法
wlwmanifest.xmlを非表示にしたい場合
wlwmanifest.xmlは
<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="http://ドメイン名/wp-includes/wlwmanifest.xml" />
のような形でhead内に記載されます。
wlwmanifest.xmlを非表示にしたい場合は
remove_action( 'wp_head' , 'wlwmanifest_link');
functions.php内に記載します。
記載したら、functions.phpを保存して、非表示になるか確認しましょう。
ワードプレスのRSSフィード、コメントフィードを削除、非表示にしたい場合
下記のような、
<link rel="alternate" type="application/rss+xml" title="フィード" href="h/feed" />
<link rel="alternate" type="application/rss+xml" title="コメントフィード" href="/feed" />
<link rel="alternate" type="application/rss+xml"
ワードプレスのフィード、コメントフィードを非表示したい場合は、
functions.php内にある
add_theme_support( 'automatic-feed-links' );
を削除、またはコメントアウトし、
下記を追記します。
remove_action('wp_head', 'feed_links_extra', 3);
何か他の設定がなければ、これでコメントフィードは削除されるはずです。
ワードプレスのバージョンや使用している事がわからないようにgeneratorを非表示にする
ワードプレスのgeneratorを非表示にする場合は、
下記をfunctions.phpに記載します。
remove_action('wp_head', 'wp_generator');
head内からWordPressのバージョン番号が削除され、表示されなくなります。
dns prefetchの削除
<link rel='dns-prefetch' href='//ajax.googleapis.com' /> <link rel='dns-prefetch' href='//s0.wp.com' /> <link rel='dns-prefetch' href='//s.w.org' />
SNSの画像やアナリティクスなどの外部サービスのscriptなどを使用しない場合は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;
}