WordPress の </body> 直前で JavaScript を読み込んではいけない
「</body>
直前で JavaScript を読み込んではいけない」という言い方は誤解を招くかもしれませんが、様々なところで目にする「JavaScript をフッターで読み込んで高速化」という文面を見て、WordPress の footer.php を開いて本当に </body>
直前で JavaScript を読み込むような記述をしてしまうと良くないことが起こりました。
wp enqueue script でのフッター読み込み指定
</body>
タグの直前には<?php wp_footer(); ?>
というタグがあるかと思いますが、これの前に書かないと、元々テーマ(functions.php)でフッターで読み込む設定をされていた JavaScript がヘッダーで読み込まれることになりました。
「元々テーマでフッターで読み込む設定をされていた JavaScript」ってなんだ、という話ですが、functions.php で wp enqueue script 関数を使って通常 HTML の<head>
でスクリプトを読み込んでいるみたいですが、あるパラメータを指定することでフッターwp_footer()
で読み込ませることが出来るようになります。
$in_footer
に置かれるが、もしこのパラメータが true の場合 終了タグの前に配置される。テーマ内の適切な位置に wp_footer() テンプレートタグが含まれていることが必須となる。
(boolean) (オプション) スクリプトは通常 HTML ドキュメントの
初期値: false
しかし、これが有効なのは「テーマ内の適切な位置にwp_footer()
テンプレートタグが含まれていること」らしく、それが恐らく</body>
タグの直前で、</body>
タグの直前に<?php wp_footer(); ?>
が無い場合、パラメータでフッターでの読み込みが指定されていても、結果ヘッダーで読み込まれるようです。
おわり
で、私の場合はそれらを整理し直しましたが、特にページの高速化に寄与しませんでしたとさ。
で、そもそもの話というか、JavaScript ファイルの読み込みをフッターでさせたい場合、footer.php を開いて直接いじるのはあまり美しくないやり方らしいですね。