wp_headの不要なコードを削除する方法をまとめました

  • 公開日:
  • 更新日:
wp_head

wp_headで出力されるコードには不要なものがたくさん含まれています。また、使う必要のないファイル(WordPressに入っているjQueryやWordPressプラグインのCSS)がwp_headを通して読み込まれてしまいます。

今回はこれらの問題を解決する方法を紹介します。

この記事の目次

wp_headの役割

wp_head関数は、headタグ内に表示するためのさまざまなコードを出力します。これらのコードは、wp-includes/default-filters.phpで設定されています。

また、WordPressプラグインの中には、wp_headアクションを使ってCSSやJavaScriptを出力するものがあります。これらのプラグインはwp_head関数を削除すると正常に動作しなくなります。そのため、テーマを自作する際にはheadタグ内にwp_headを記述する必要があります。

不要なコードを削除する方法

コメントのフィードなどの表示

コメントのフィードや特定のカテゴリのフィードのリンクを表示します。

<link rel="alternate" type="application/rss+xml" title="◯◯のフィード" href="http://example.com/hoge/feed/" />

このコードを削除するには、以下のコードをfunctions.phpに追記します。

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

絵文字の表示

WordPress 4.2からは絵文字が使えるようになりました。wp_headは、絵文字を利用するために必要なJavaScriptとCSSを出力します。

もし絵文字を使わないのであれば、以下のコードをfunctions.phpに追記します。

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

ブログ投稿ツールのためのタグ

ブログ編集ツールから記事を投稿するためには、以下の記述が必要です。2行目は、Windows Live Writerからの投稿に必要です。

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

ブログ投稿ツールを使わないのであれば、以下のコードをfunctions.phpに記述して、上記のコードを削除します。

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

rel=”prev”とrel=”next”の表示

ページ間の関係を示すrel=”prev”とrel=”next”を表示します。

<link rel='prev' title='前の記事' href='http://example.com/prev/' />
<link rel='next' title='次の記事' href='http://example.com/next/' />

これらのコードを削除するには、以下のコードをfunctions.phpに追記します。

remove_action('wp_head', 'adjacent_posts_rel_link_wp_head');

WordPressのバージョンの表示

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


このコードを削除するには、以下のコードをfunctions.phpに追記します。

remove_action('wp_head', 'wp_generator');

rel=”canonical”タグの表示

URLの正規化に必要なrel=”canonical”を表示します。

<link rel='canonical' href='http://example.com/hoge/' />

rel=”canonical”が不要であれば、以下のコードをfunctions.phpに追記します。

remove_action('wp_head', 'rel_canonical');

短縮URLの表示

短縮URLを表示します。

<link rel='shortlink' href='http://example.com/?p=投稿ID' />

短縮URLは、WordPress管理画面の投稿編集ページにある[短縮URLを取得]ボタンをクリックすると表示されます。

WordPressの投稿ページに表示される[短縮URLを取得]ボタン

このコードを削除するには、以下のコードをfunctions.phpに追記します。

remove_action('wp_head', 'wp_shortlink_wp_head');

wp_headでjQueryを読み込まないようにする方法

パフォーマンスの向上のために、Google Host LibrariesからjQueryを読み込みたい場合があります。Google Hosted LibrariesのjQueryはgzip形式で圧縮されており、軽量化された状態で転送されています。また、他のサイトでGoogle Hosted LibrariesのjQueryを読み込んでいる場合には、キャッシュによって表示速度が速くなることが期待できます。

このような場合、jQueryの二重読み込みにならないように、デフォルトでWordPressに入っているjQueryを読み込まないようにする必要があります。デフォルトのjQueryを読み込まないようにするためには、以下のコードをfunctions.phpに記述します。

function my_delete_local_jquery() {
	wp_deregister_script('jquery');
}
add_action( 'wp_enqueue_scripts', 'my_delete_local_jquery' );

2016年1月24日追記:Google Hosted Librariesのgzip圧縮について

GIDZipTestでGoogle Hosted LibrariesのjQuery 1.12.0を調べると、約97KBだったファイルがgzip圧縮によって約34KBに軽量化された状態で転送されています。

プラグインの不要なCSSを読み込まないようにする方法

前述の通り、プラグインの中にはCSSを読み込むものがあります。プラグインのスタイルを自ら書きたい場合には、プラグインで用意されているCSSを読み込まないようにしたいです。また、スタイルシートを統合すると、HTTPリクエストが減り、パフォーマンスの向上にもつながります。

例えば「WP-PageNavi」プラグインの場合、以下のCSSが読み込まれます。

<link rel='stylesheet' id='wp-pagenavi-css'  href='http://example.com/wp-content/plugins/wp-pagenavi/pagenavi-css.css?ver=2.70' type='text/css' media='all' />

「WP-PageNavi」プラグインのCSSを読み込まないようにするには、functions.phpに以下のコードを記述します。

function my_delete_plugin_files() {
	wp_dequeue_style('wp-pagenavi');
}
add_action( 'wp_enqueue_scripts', 'my_delete_plugin_files' );

wp_dequeue_style関数の引数には、プラグインのハンドル名を入れます。多くのプラグインでは、ID名から「-css」を除いたものがハンドル名になります。