Twenty Twelveの子テーマでcss/ie.cssへの変更が反映されないとき
Twenty Twelveでは、IE7、IE8など古いバージョンのInternet Explorerのスタイルは、cssディレクトリにあるie.cssでコントロールしています。
ブラウザでサイトのソースを表示してみるとIE9未満用に別のスタイルシートが読み込まれているのがわかります。
<link rel='stylesheet' … href='http:// … /style.css?ver=3.5.1' type='text/css' media='all' /> <!--[if lt IE 9]> <link rel='stylesheet' … href='http:// … /css/ie.css?ver=20121010' type='text/css' media='all' /> <![endif]-->[if lt IE 9]とは、「もしもIE9未満(lt:less than)のときは」という意味です。IE8などのときは/css/ie.cssが読み込まれることになります。
ところが、Twenty Twelveの子テーマを作成するときに、子テーマのディレクトリにcssディレクトリを作成してie.cssをコピー(またはcssディレクトリごとコピー)して、ie.cssを変更しても、そのスタイルはInternet Explorerには反映されません。
これは、「/css/ie.cssを読み込む」という指示がfunctions.phpに記述されているからです。
▼ie.cssを読み込む指定(functions.phpの150行目あたり)
wp_enqueue_style( 'twentytwelve-ie', get_template_directory_uri() . '/css/ie.css', array( 'twentytwelve-style' ), '20121010' );
$wp_styles->add_data( 'twentytwelve-ie', 'conditional', 'lt IE 9' );
そこで、この2行をコピーして、子テーマの/css/ie.cssも読み込むように変更した設定を追加します。「も」というのは、親テーマを読み込んだ後に子テーマも読み込むということです。つまり、通常のstyle.cssと同じように、子テーマでは変更したいスタイルのみを定義すれば済みます。
▼追加する設定(子テーマのie.cssも読み込む)
wp_enqueue_style( 'twentytwelve-ie2', get_stylesheet_directory_uri() . '/css/ie.css', array( 'twentytwelve-ie' ), '20121010' );
$wp_styles->add_data( 'twentytwelve-ie2', 'conditional', 'lt IE 9' );
オリジナルの2行と違う部分は赤で示してあります。
- twentytwelve-ie2 --- 子テーマのie.cssの識別子です。任意の名前で大丈夫です。
- get_stylesheet_directory_uri() --- 子テーマのディレクトリからファイルを読み込むための命令です。
- twentytwelve-ie --- 直前に指定された親テーマのスタイルシート(ie.css)を先に読み込む設定です。これにより、子テーマにie.cssを丸ごとコピーせずに済みます。
うまく親テーマを子テーマに引き継げたかの確認もかねて、子テーマのie.cssに次の3行だけ記述してサイトを更新してみます。
.site-header h1 { font-size: 60px; }
サイトヘッダーが極端に大きくなったので、変更が反映され、子テーマに記述していない部分は親テーマから引き継がれたことが確認できました。
これで、古いIE用のスタイルを変更したい場合は、子テーマのcss/ie.cssに記述すれば済むようになります。