der Gegenwart

WordPress 2.8にしてからhead要素内に無駄な要素が増えてウザい件について

WordPress 2.8になってから、head要素内に勝手にナビゲーション用のlink要素なんかが挿入されるようになって、かなりウザかったので何とかした。必要なものは自分で書くから余計なことすんなっての。大きなお世話だバカ。

で、対処法。wp-includesディレクトリ内のdefault-filters.phpを覗いてみると、167行目辺りから下記のような記述がある。

add_action('wp_head', 'wp_enqueue_scripts', 1);
add_action('wp_head', 'feed_links_extra', 3);
add_action('wp_head', 'rsd_link');
add_action('wp_head', 'wlwmanifest_link');
add_action('wp_head', 'index_rel_link');
add_action('wp_head', 'parent_post_rel_link', 10, 0);
add_action('wp_head', 'start_post_rel_link', 10, 0);
add_action('wp_head', 'adjacent_posts_rel_link', 10, 0);
add_action('wp_head', 'locale_stylesheet');
add_action('publish_future_post', 'check_and_publish_future_post', 10, 1);
add_action('wp_head', 'noindex', 1);
add_action('wp_head', 'wp_print_styles', 8);
add_action('wp_head', 'wp_print_head_scripts', 9);
add_action('wp_head', 'wp_generator');

で、こいつらがadd_actionされてるのでremove_actionすればいいんだけども、いくつか関係ないのがあるので排除。

add_action('publish_future_post', 'check_and_publish_future_post', 10, 1);

こいつはwp_headにaddされてないので無関係。

add_action('wp_head', 'noindex', 1);

こいつがなくなると管理画面「設定」内の「プライバシー」が上手く機能しなくなると思われるのでこれも除く。残りをremoveすればいいので、テーマディレクトリ内のfunctions.php内に下記のように記述すればOK。

remove_action('wp_head', 'wp_enqueue_scripts', 1);
remove_action('wp_head', 'feed_links_extra', 3);
remove_action('wp_head', 'rsd_link');
remove_action('wp_head', 'wlwmanifest_link');
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', 'adjacent_posts_rel_link', 10, 0);
remove_action('wp_head', 'locale_stylesheet');
remove_action('wp_head', 'wp_print_styles', 8);
remove_action('wp_head', 'wp_print_head_scripts', 9);
remove_action('wp_head', 'wp_generator');

remove_action関数の最後の引数の数字って何なんだろ*1。なくてもいいかもしれない。あと必要に応じてremove_actionするものを減らせばいいと思う。「~がなくなった」とか何とかなるかもしれないし。

追記

この記事についたブコメに以下のようなものがあった。

wp_enqueue_scripts,wp_print_head_scripts,wp_print_styles,locale_stylesheet はremoveしない方が良いと思うんだ。大多数のプラグインがまともに動作しなくなるよ。

まぁ、たしかにそうなんだけど、そもそも私はプラグインによって勝手に挿入されるJavascriptやらCSSやらが好きじゃないんだよね。あまり複雑なプラグインを使ってないので、私のサイトには何の影響もない。こいつらを排除したところで管理画面に影響が出るわけでもないし*2、正直どうでもいい。

もちろん人によってremove_actionしちゃまずいものが出てくるだろうから、それは各自の裁量で適当に何とかして欲しいところ。何とかできない人については私の知ったところではないのでどうでもいい。

追記2

バージョンによってwp_headにadd_actionされる内容が結構変わるので注意。3.0.1では上の記述だとダメだと思う。例えば「adjacent_posts_rel_link」が「adjacent_posts_rel_link_wp_head」に変わっていたりとか。

  1. 軽く調べてみたら、前の数字がThe priority of the function、後ろの数字がThe number of argumentsとのこと。結局よく分からんな。
  2. で、合ってるよね?