古いバージョンのIE(Internet Explorer)にHTML5を認識させるというhtml5.jsというものを、みなさまご利用でしょうか?WordPressでもそうでなくても、もういらないのでは?と思いつつさよならできない私です。
header.phpに書くしかなかったあのころ
WordPressのテーマを作るにあたって、
クライアントがIE9未満のバージョンであったなら、header.phpに以下を記述する。
<!--[if lt IE 9]>
<script src="<?php echo esc_url( get_template_directory_uri() ); ?>/js/html5.js"></script>
<![endif]-->
実際にはもう必要ないかと思われるものの、公式のtwentyなんとかのテーマにも相変わらずこのように書いてある。
本来テーマでjsフアイルを利用する場合は、functions.phpにてwp_enqueue_script()で追加するのが正しい。
とはいえ、「IE9未満だったら?」というような条件分岐ができないため、この部分はheader.phpにハードコーディングするしか方法がなかったのだ。
「ハードコーディングだめ!」「wp_enqueue_script()使って!」とテーマレビューで何度か指摘されたこともある。そうはいうけれど、twentyなんとかのテーマだってこう書いてあるし、他に方法ないもんね?とほっておくとレビューを通ったりするものだった。
wp_enqueue_script()で対応できるようになっていた
さすがにhtml5.jsはもういらないのでは?
と最新版のtwentysixteenをチェックしてみると・・・まだあった〜
しかし呼び出し元はheader.php ではなく、functions.phpに書いてある。
1 2 |
wp_enqueue_script( 'twentysixteen-html5', get_template_directory_uri() . '/js/html5.js', array(), '3.7.3' ); wp_script_add_data( 'twentysixteen-html5', 'conditional', 'lt IE 9' ); |
wp_script_add_data()という関数がWordPress4.2から使えるようになっていて、これでjsファイルを読み込む条件を指定できるようだ。
ちなみにcssの場合は、wp_style_add_data()という関数が以前から用意されていた。
Internet Explorer のサポートポリシー
最近のIE事情はというと、Windowsのバージョンにより最新版しかサポートされないことになっている。
» Internet Explorerのサポートポリシーが変わりました
Windows VistaでのIE9が最低条件だ。
やはりhtml5.jsはいらない子?
と思いつつ、せっかくだからwp_script_add_data()を使ってみよう。