WordPress:wp_head()でheadに出力されるタグを消去する方法

WordPress:wp_head()でheadに出力されるタグを消去する方法

よく使うのに覚える気もなく毎回ググっている気がするので備忘録。
wp_head()を記述した際にhead内に出力されるタグを消す方法です。
毎回使うならベースにしてるテンプレートとかへ予め記述しておいても良いですが、サイトのタイプや運営の仕方によって変わるので。

wp_head()を記述した際にhead内に出力されるlink rel="alternate"とかmeta name="genarator"などのタグですが、必要ないと思うものはremove_action()で消して、ごちゃごちゃしたhead内を綺麗にできます。
別にそのままでも支障はない(むしろ消してしまうと支障があるものが有る)と思いますが、確実に不要なものであれば消して、少しでもソースを綺麗にしたいときに。

head内に出力されるものは例えば以下のようなものがあります。

  • link rel="alternate"
  • link rel="EditURI"
  • link rel="wlwmanifest"
  • link rel="prev" / link rel="next"
  • link rel="canonical"
  • link rel="shortlink"
  • meta name="genarator"

それぞれのタグに関しての説明は割愛します。
普段はあまり見かけないものとしては、EditURIwlwmanifestとかは更新を通常の管理画面だけでなく、アプリなどの外部ツールでする場合に必要なものだったりするので、仕様などによっては消さない方が良いと思います。

簡単にhead内を整理できるプラグインとかもありますが、以下で紹介するのはfunctions.phpを使う方法ですので、テーマ内にfunctions.phpがない場合は作成してください。

functions.php

remove_action('wp_head', 'feed_links', 2);
remove_action( 'wp_head', 'feed_links_extra', 3 );
remove_action( 'wp_head', 'rsd_link' );
remove_action( 'wp_head', 'wlwmanifest_link' );
remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head' );
remove_action( 'wp_head', 'wp_generator' );
remove_action( 'wp_head', 'rel_canonical' );
remove_action( 'wp_head', 'index_rel_link' );
remove_action( 'wp_head', 'parent_post_rel_link', 10, 0 );
remove_action( 'wp_head', 'start_post_rel_link', 10, 0 );
remove_action( 'wp_head', 'wp_shortlink_wp_head' );

上記をfunctions.phpに記述後にhead内を確認すると、余計なものが消えているのが確認できます。
ちなみにremove_action( 'wp_head', 'wp_enqueue_scripts', 1 );など他にも幾つかこういったものはあり、その他どんなものが設定されているか見たい場合は/wp-includesにあるdefault-filters.phpの202行目あたりを見れば確認できます。
ただ、中には消してしまうとプラグインなどに影響するものもあるので、消してしまって問題ないかの注意が必要です。

default-filters.phpの行数はWordPress 3.5.1の場合です。

Close the search window,
please press close button or esc key.