PHPでテーマのURLを取得する方法
テーマのimage/headersディレクトリにある画像を参照するには、自分のテーマディレクトリのURLを取得する必要があります。これはPHPでどのように行われますか?
この関数は return テーマディレクトリのURLを返すので、他の関数で使うことができます。
get_bloginfo('template_directory');
あるいは、この関数は echo ブラウザへのテーマディレクトリのURLになります。
bloginfo('template_directory');
そのため、テーマimages/headers
フォルダ内の画像の例は次のようになります。
<img src="<?php bloginfo('template_directory'); ?>/images/headers/image.jpg" />
注意して、@EAMannが言ったこと。 Ericは、一般的なアプローチ、そして関数bloginfo()
とget_bloginfo()
がどのように機能するのか、そして(ほとんどの)テーマに必要な値を得るためにパラメータ'template_directory'
を渡す方法については正しいです。
ただし、注意点があり、 caveat は新しいChild Themesにあります。あなたが子テーマを使っているなら、'template_directory'
はおそらくあなたが親テーマディレクトリにある画像を実際に参照しようとしているのでなければあなたが望むものではないでしょう。代わりに、子テーマの場合はstylesheet_directory
を渡すことをお勧めします(名前からわかることはわかりませんが、ちょっとこれが正しい方法です)。stylesheet_directory
を使用したEricの返信からいくらか借用すると、次のようになります。これ(私はそれがラップしないように例を短くしました):
<img src="<?php bloginfo('stylesheet_directory'); ?>/images/header.jpg" />
私が簡単なスタンドアロンファイルを書いたことを説明するために、あなたはあなたのウェブサイトのルートにtest.php
としてドロップし、それが何を出力するのか見るために走ることができます。最初にTwentyTenのような通常のテーマで実行してから、子のテーマで実行します。
<?php
/*
* test.php - Test the difference between Regular and Child Themes
*
*/
include "wp-load.php";
$bloginfo_params = array(
'admin_email',
'atom_url',
'charset',
'comments_atom_url',
'comments_rss2_url',
'description',
'home',
'html_type',
'language',
'name',
'pingback_url',
'rdf_url',
'rss2_url',
'rss_url',
'siteurl',
'stylesheet_directory',
'stylesheet_url',
'template_directory',
'template_url',
'text_direction',
'url',
'version',
'wpurl',
);
echo '<table border="1">';
foreach($bloginfo_params as $param) {
$info = get_bloginfo($param);
echo "<tr><th>{$param}:</th><td>{$info}</td></tr>";
}
echo '</table>';
何かに気付いたら、bloginfo()
とget_bloginfo()
に渡すことができるものにもっとたくさんあることに気づくかもしれません。以下のコードとスクリーンショットを見てアイデアを見つけてください。
スクリーンショットを見ると、stylesheet_directory
は通常のテーマでは'template_directory'
と同じことを返しますが、異なる値を返します。子のテーマではおそらく必要な値です。
(出典: mikeschinkel.com )
このスクリーンショットを明確にするために、
wp30.dev
は私のローカルコンピュータでのみ動作するドメインです。これは現在WordPress 3.0.1のインスタンスで、私のラップトップの127.0.0.1
(localhost
と同じ)に設定されています。私はこのような特別な例をテストするためにそれを使用します。私は VirtualHostX をMac OS X上で便利なものとしてこれらのプライベートなルーティング不可能な.dev
ドメインを設定する手助けとして使用しましたが、だれでもコンピュータのhostsファイルとそのファイルを編集することによって手動でそれを行うことができます。 httpd.confファイル.
ちなみに、あなたがChild Themesに慣れていないのであれば、他に2つのWordPress Answersが役立ちます。
テーマの全体構造は、template
(親テーマフォルダnamreを保持)とstylesheet
(子テーマフォルダnamrを保持)の2つのオプションの上に構築されます。子供のテーマが使用されていない場合、これらは同じです。
直接アクセスするのではなく、フィルタの柔軟性を持たせるために、 get_template()
と get_stylesheet()
があります。
今不足している唯一のことは、テーマフォルダの場所とそれらを組み合わせることです。これは get_theme_root_uri()
で行うことができ、やはり get_template_directory_uri()
と get_stylesheet_directory_uri()
でラップするのが便利です。
template_directory
またはstylesheet_directory
引数を持つ [get_]bloginfo()
は単にこれらをラップするだけであり、そのように使用する理由はほとんどありません。私はそれが議論をディレクトリ(一般的にはローカルパスに関連している)と言っているがURLを返すことによって混乱させるだけであると思うでしょう。
概要:
- onlyまたはparent themeを参照するには
get_template_directory_uri()
を使用してください - onlyまたはchild themeに
get_stylesheet_directory_uri()
を使用