///

wp_head() で表示される、CSSやJavaScript(JS、jQuery)を削除する

wrote :

テンプレートをフルカスタマイズで作ろうとしたとき、これまでは、wp_head() で表示される内容が不要なのでどうにかできないものか。

はじめは、wp_head() メソッド自体をテンプレートに記述しないようにしていたのですが、将来的にプラグインを使用したときに必要になるかもと思い、wp_head() を記述しつつも、表示される内容を空っぽにしたい。
ググるといろいろ出てきます。感謝です。

wp_head() で表示されるすべてリセット

wp_head() で表示される内容をリセットするために、自分のfunctions.phpに追記している内容はコレ。
(表示されるソースを見ながら、ひとつずつ実行すれば何が表示されなくなるかひとつひとつ確認できるます。実際に試す場合はバックアップは忘れずに)

functions.php
remove_action( 'wp_head', 'rsd_link' );
remove_action( 'wp_head', 'wlwmanifest_link' );
remove_action( 'wp_head', 'wp_generator' );
remove_action( 'wp_head', 'wp_shortlink_wp_head' );
remove_action( 'wp_head', 'rest_output_link_wp_head' );
remove_action( 'wp_head', 'wp_oembed_add_discovery_links' );
remove_action( 'wp_head', 'wp_oembed_add_host_js' );
remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
remove_action( 'wp_print_styles', 'print_emoji_styles' );
remove_action( 'wp_head', 'noindex', 1 );

function remove_dns_prefetch( $hints, $relation_type ) {
	if ( 'dns-prefetch' === $relation_type ) {
		return array_diff( wp_dependencies_unique_hosts(), $hints );
	}
	return $hints;
}
add_filter( 'wp_resource_hints', 'remove_dns_prefetch', 10, 2 );


function my_delete_head() {
	wp_deregister_script( 'jquery' );
	wp_deregister_style( 'contact-form-7' );
}
add_action( 'wp_enqueue_scripts', 'my_delete_head' );

プラグイン「Contact Form 7」で呼び出されるCSSも削除

レイアウトはオリジナルのCSSを使って調整したいため、Contact Form 7で呼び出されるCSSも削除しています。

wp_deregister_style( 'contact-form-7' );

他のプラグインで呼び出されたCSSも不要の場合は、wp_deregister_style("id名*")でだいたい削除できそうです。
*id名はid名末の「-css」を除外した名前。
例) contact-form-7-css → contact-form-7

川上 武範(かわかみ たけのり)
1975年生。シンプルシンプルデザイン代表兼Webクリエイター。たびのとWebサイト運営責任者。

企画からサイト設計、正しいマークアップを意識したWebサイト制作やユーザー視点の情報設計を得意としている。

シンプルシンプルデザイン
たびのと
twitter : たけたけ@OnlyTwo

メディア掲載
2016年10月25日 レバテックフリーランスの記事「自作Webサービス記事紹介まとめ」でサイト内の記事「Webサービス「たびのとTOKYO」を作ってみました」を紹介していただきました。