WordPress3.0子テーマで、パス指定にbloginfo(‘template_url’)は使えない

2010年12月27日

#2012.02.04 情報が古くなっていたので少し修正

コレ、ちょとぐぐれば、どこのブログにも書いてある内容で申し訳ないのですが。
ちょうど今、ミスってしまったので覚え書き。

WordPress3.0になってから、「もとあるテーマに手を加えず、子テーマで機能拡張をする」という便利なことができるようになりました。

特に、デフォルトテーマのTwentyTenを下敷きにして子テーマを作れば、難しいPHPの関数のことが分からなくてもそれなりに高機能なテーマが作れてしまったりするものです。

さてさて、子テーマの作成時に画像やCSSやjs等を読み込みたい時ですが、いつもの感じでパスを指定すると親テーマのディレクトリを見に行ってしまうことに今さらながら気付きました。

いつもどおり bloginfo(‘template_url’); を使うと。

いつもの書き方(例:TwentyTenテーマを親テーマとして、新しく子テーマを作成した場合。)

<img src="<?php bloginfo('template_url'); ?>/img/header.jpg" />


出力後:

<img src="https://mypacecreator.net/wp-content/twentyten/img/header.jpg" />

あれれれ??
バッチリ親テーマのディレクトリを読みに行ってましたとさ。

子テーマでは(‘stylesheet_directory’)を使う

<img src="<?php bloginfo('stylesheet_directory'); ?>/img/header.jpg" />


出力後:

<img src="https://mypacecreator.net/wp-content/childtheme/img/header.jpg" />

ハイ。子テーマでは(‘template_url’)の代わりに(‘stylesheet_directory’)を使えということです。

・・・あれ?Codexでは、

stylesheet_directory
(使用中のメインCSSファイルが置かれたディレクトリのURL)(Version 2.3.1 で廃止)

って書いてあるのにな。3.0で復活したって事でいいのかな??

【2012.02.04追記】今はget_stylesheet_directory_uriの方が良さそう

どのタイミングからかは詳しく分かりませんが、bloginfo(‘stylesheet_directory’)はやっぱり非推奨になっていました。
さらにはbloginfo(‘template_url’)の推奨状況も変わっています。

親テーマの場合

<img src="<?php bloginfo('template_url'); ?>/img/header.jpg" />
↓
<img src="<?php echo get_template_directory_uri(); ?>/img/header.jpg" />

子テーマの場合

<img src="<?php bloginfo('stylesheet_directory'); ?>/img/header.jpg" />
↓
<img src="<?php echo get_stylesheet_directory_uri(); ?>/img/header.jpg" />

と書くのが今は良いようです。
このあたりの推奨状況の変化も近々記事にまとめたいと思います。