WordPressのhead領域から不要なHTMLコードを削除する方法

WordPressのhtmlヘッダを整理する様々な方法

wp_deregister_style

WordPressでは、標準の設定でHTMLのhead領域に様々なコードを出力するようになっている。

そして、head領域を整理するための方法は複数存在する。

wp_enqueue_style()を利用して設定されたhtmlコードは、wp_deregister_styleで取り除くことが可能。例えば、stylesheetやjsのブラウザキャッシュ対策 for wordpressでwp_enqueue_styleを利用して設定したHTMLは以下の方法で取り除くことが可能。

wp_dequeue_style('other');

id=’other-css’という属性をキーにして該当するHTMLを削除することができる。

wp_enqueue_styleとwp_deregister_styleを利用することで、wordpressのhead領域を動的にコントロールすることができる。やや上級者向けの機能。

参考
http://codex.wordpress.org/Function_Reference/wp_deregister_style

remove_action

remove_action関数は、wordpressのアクション設定を解除する関数になる。add_actionでフックしたものをremove_actionで解除するということになる。この機能を利用して出力されているhead領域のhtmlを非表示にすることができる。以下の例は、wordpressのバージョン情報を出力するHTMLを非表示にする設定である。

remove_action('wp_head', 'wp_generator');

上のコードによりhead領域に存在する以下のコードは出力されなくなる。

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

wp_generatorという関数をwp_headアクションフックから解除することでバージョン情報の出力を制御している。上の方法で以下のファイル内で設定されている関数のアクションフックを解除することも可能となる。

wp-includes/default-filters.php

内で[wp_head]で検索してadd_action設定されているものをremove_actionで解除することが可能。

themeにハードコードされたHTML

テーマファイルに直接ハードコードされたhtmlは上の方法では非表示にすることはできない。HTMLのhead領域は一般的にはテーマファイルの

header.php

に記述される。

そのため、header.phpをダイレクトに変更して不要なコードを削除する方法もあるが、よりよい方法として子テーマを用意してheader.phpを上書きする方法がよりwordpress的でおすすめである。

本エントリーでは、子テーマの利用方法については言及せず、wordpressのhead領域のhtmlにwp_deregister_styleやremove_actionのいずれでも消すことができないコードが存在するという注意点だけ書いて終わりにする。

子テーマについては別途エントリーしたいと考えている。