web-dev-qa-db-ja.com

get_template_directory()対bloginfo( 'template_directory')対TEMPLATEPATH

私はこの記事を読んでいました: よくあるWordPress開発の間違いとその修正方法 、そしてその中で、彼らは言っています:

テーマの場所を取得する:TEMPLATEPATHまたはbloginfo( 'template_directory')を使用している場合 やめて! 上の例で見たように、とても便利なget_template_directory()を使うべきです。

しかし、彼は詳述しません。 bloginfo()の何がそんなに悪いの?

15
coopersita

簡単に言うと、get_bloginfo( 'template_directory' )get_bloginfo( 'template_url' )は単にget_template_directory_uri()を返します。

そのため、後者のテンプレートタグを直接参照するだけで、2番目の呼び出しをショートカットできます。

get_bloginfo() のソースを参照してください。

他のいくつか:

  • 'url' => home_url()
  • 'wpurl' => site_url()
  • 'stylesheet_url' => get_stylesheet_uri()
  • 'stylesheet_directory' => get_stylesheet_directory_uri()
  • 'locale' => get_locale()

編集する

注: TEMPLATEPATHSTYLESHEETPATHは廃止予定の なので、今は単にそれらをそれぞれget_template_directory()get_stylesheet_directory()に置き換えてください。

編集2

再:このコメント

ちょうど私が言っていたところです:)。 get_template_directory()はパスを返し、get_template_directory_uri()はURLを返すと付け加えます。だから作者は一貫していません:get_bloginfo( 'template_directory' )get_template_directory()は違うものを返します!

ソースに戻って参照してください。

case 'template_directory':
case 'template_url':
    $output = get_template_directory_uri();
    break;

再:このコメント:

子テーマを開発する際の1つの注意点は、明示的にget_stylesheet_directory()を使用する必要があるでしょう。私が間違っているなら誰かが私を直します。

本当ですが、それはいつもそうです。 get_bloginfo()は、get_stylesheet_directory()に関連するanythingを返しません。 get_stylesheet_uri()get_stylesheet_directory_uri()のみを返します。

16
Chip Bennett