JOURNAL クリエイティブとマーケティングの話

WordPressでCSSをフッター(wp_footer)で読み込む方法

WordPressテーマではwp_register_styleでCSSを登録し、wp_enqueue_styleを使ってwp_headでCSSを読み込むようになっています。

しかし、JavaScript/CSSの読み込みはコンテンツのレンダリングをブロックしてしまうため、複数のファイルを読み込むような構成になっている場合に、ページ表示速度が著しく遅くなってしまうことがあります。

最近では以前にもましてページ表示速度がSEO的にも重要になってきているため、こうした表示の遅れは改善したいところです。

Googleが提供しているPageSpeed Insightsでは、Webページの表示速度のチェックと改善方法の提案をしてくれますが、head内でCSS/JavaScriptを読み込んでいると間違いなく「スクロールせずに見えるコンテンツのレンダリングをブロックしている JavaScript/CSS を排除する」という改善案を提示されます。

つまり、「ファーストビューの表示に関係ないJavaScriptやCSSは後で読み込んだ方がページの表示に邪魔になりませんよ」ということですね。

しかしWordPressの場合、標準ではCSSはすべてwp_headで読み込まれる仕様になっています。

ということで今回は、WordPressでCSSをフッター(wp_footer)で読み込む方法についてご紹介します。

なおここでは、

  • header.css(ヘッダーエリア用CSS)
  • sidebar.css(サイドバーエリア用CSS)
  • footer.css(フッターエリア用CSS)

という3つのCSSを読み込む場合を例として話を進めたいと思います。

WordPressでCSSをフッター(wp_footer)で読み込むソースコード

完成したソースコードがこちら。functions.phpに追記してください。

functions.php
/* CSSの読み込み
---------------------------------------------------------- */
function register_stylesheet() {
	wp_register_style('header', get_template_directory_uri().'/header.css');
	wp_register_style('sidebar', get_template_directory_uri().'/sidebar.css');
	wp_register_style('footer', get_template_directory_uri().'/footer.css');
}
//style.cssのみヘッダーで読み込む
function add_stylesheet() {
	register_stylesheet();
	wp_enqueue_style('header', '', array(), '1.0', false);
}
add_action('wp_enqueue_scripts', 'add_stylesheet');

//残りのCSSをフッターで読み込む
function prefix_add_footer_styles() {
	wp_enqueue_style('sidebar', '', array(), '1.0', false);
	wp_enqueue_style('footer', '', array(), '1.0', false);
};
add_action( 'wp_footer', 'prefix_add_footer_styles' );

スクロールせずに見えるコンテンツであるヘッダーに関するスタイル指定をしたheader.cssのみをwp_headで読み込み、その他はフッターのwp_footer関数にて読み込むようになっています。

なお、wp_register_styleとwp_enqueue_styleについては下記の記事で書いていますので、よかったら読んでみてください。

参考ページ
wp enqueue script – How to load css in the footer – WordPress Development Stack Exchange