【WordPress】wp_head();で自動出力されるタグを除去
WordPress2016年8月29日
wp_head();の記述を残しつつ、余計なタグを出力しない方法についてまとめてみました。
WordPressでオリジナルテーマでの構築やカスタマイズの際、wp_head();で自動出力されるタグが邪魔になる場合があります。
wp_head();ごとheader.phpから削除できればよいのですが、動作しなくなるプラグインもあるためサイトとしての動作を安定させるために、wp_head();は残しておく必要があります。
そこで具体的には以下に挙げられるようなタグを出力しないようにします。
- ※バージョン 4.6.0で確認済みです
link rel="EditURI"
link rel="wlwmanifest"
link rel="prev"
link rel="next"
link rel="canonical"
link rel="shortlink"
link rel="alternate"
meta name="genarator"
出力しないようにするには以下の2つの方法があります。
- function.phpで出力をオフにする
- コアファイルを編集して対象のタグをコメントアウト
function.phpで出力をオフにする
function.phpに以下の記述を追加します。
remove_action('wp_head','_wp_render_title_tag',1);
remove_action('wp_head','wp_enqueue_scripts',1);
remove_action('wp_head','wp_resource_hints',2);
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',10,0);
remove_action('wp_head','locale_stylesheet');
remove_action('wp_head','noindex',1);
remove_action('wp_head','print_emoji_detection_script',7);
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('wp_head','rel_canonical');
remove_action('wp_head','wp_shortlink_wp_head',10,0);
remove_action('wp_head','wp_site_icon',99);
remove_action('wp_head','wp_no_robots');
remove_action('wp_head','wp_post_preview_js',1);
remove_action('wp_head','wp_oembed_add_discovery_links');
remove_action('wp_head','wp_oembed_add_host_js');
remove_action('wp_head','rest_output_link_wp_head',10,0);
remove_action('wp_head','_custom_logo_header_styles');
コアファイルを編集して対象のタグをコメントアウト
これも実際にはfunction.phpで出力オフにするのとやることは同じです。
コアファイル(wp-includes/default-filters.php)をエディタで開き、対象の記述を以下のようにコメントアウトします。
//add_action('wp_head', 'feed_links', 2);
ただし、WordPressのバージョンアップでこのファイルが上書きされてしまうと出力が復活しますので要注意です。
基本的にはfunction.phpでオフにしておくのが望ましいでしょう。
おまけ:インラインスタイルの除去
使用しているテーマにもよりますが、上記で紹介した記述を追加しても以下のインラインスタイルが追加されている場合があります。
<style type="text/css">.recentcomments a{display:inline !important;padding:0 !important;margin:0 !important;}</style>
上記はそのままでも特に問題ないのですが、以下の記述を加えることで出力しないようにすることができます。
function remove_recent_comments_style(){
global $wp_widget_factory;
remove_action('wp_head',array($wp_widget_factory->widgets['WP_Widget_Recent_Comments'],'recent_comments_style'));
}
add_action('widgets_init','remove_recent_comments_style');
Web屋の芝生DIYでは、最終的に以下の記述をfunction.phpに加えています。
remove_action('wp_head','_wp_render_title_tag',1);
remove_action('wp_head','wp_enqueue_scripts',1);
remove_action('wp_head','wp_resource_hints',2);
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',10,0);
remove_action('wp_head','locale_stylesheet');
remove_action('wp_head','noindex',1);
remove_action('wp_head','print_emoji_detection_script',7);
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('wp_head','rel_canonical');
remove_action('wp_head','wp_shortlink_wp_head',10,0);
remove_action('wp_head','wp_site_icon',99);
remove_action('wp_head','wp_no_robots');
remove_action('wp_head','wp_post_preview_js',1);
remove_action('wp_head','wp_oembed_add_discovery_links');
remove_action('wp_head','wp_oembed_add_host_js');
remove_action('wp_head','rest_output_link_wp_head',10,0);
remove_action('wp_head','_custom_logo_header_styles');
//インラインスタイル除去
function remove_recent_comments_style() {
global $wp_widget_factory;
remove_action('wp_head',array($wp_widget_factory->widgets['WP_Widget_Recent_Comments'],'recent_comments_style'));
}
add_action('widgets_init','remove_recent_comments_style');
これでとてもスッキリしたhtmlソースになると思います。
パフォーマンスやSEOを考慮すると、余計なソースは削除しておくに越したことはありませんので、こういった細やかなところに気を使ってサイトを構築するとよいですね。