PHPでテーマURLを取得するにはどうすればよいですか?


38

テーマのimage / headersディレクトリ内の画像を参照するには、テーマディレクトリのURLを取得する必要があります。これはPHPでどのように行われますか?

回答:


47

この関数はテーマディレクトリのURL を返すため、他の関数で使用できます。

get_bloginfo('template_directory');

または、この関数はテーマディレクトリのURLをブラウザにエコーします。

bloginfo('template_directory');

したがって、themes images/headersフォルダー内の画像の例は次のようになります。

<img src="<?php bloginfo('template_directory'); ?>/images/headers/image.jpg" />

注:これは、現在アクティブな子テーマではなく子テーマを使用している場合、テーマへのパスを提供します。以下のより長い回答がこれをより詳細に説明しています。
ジェイソン

2
単に使用することができますget_template_directory_uri()
ペイ

32

@EAMann注意点と、言いました。エリックは、一般的なアプローチ、機能bloginfo()get_bloginfo()動作の方法、および'template_directory'(ほとんどの)テーマに必要な値を取得するためにパラメーターを渡す方法について正しいです。

ただし、警告があり、その警告は新しい子テーマにあります。子テーマを使用している場合'template_directory'は、親テーマディレクトリにある画像を実際に参照しようとしていない限り、おそらく望みのものではありません。代わりに、子テーマのために何をあなたはおそらくしたいことは渡すことですstylesheet_directory(私は名前は彼らが何であるかを教えてくれませんが、ちょっと、それはそれがあるだけの方法ですが、私が知っている、知っている!)を使用して、エリックの回答からやや借りてstylesheet_directory(このようになります。例が短くなるように短縮しました):

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

簡単なスタンドアロンファイルを書いた点を説明するために、Webサイトのルートとしてドロップし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'が、値は異なり、おそらく子テーマに必要な値が返されることがわかります 。

WordPressの子テーマを使用した場合と使用しない場合のget_bloginfo()の戻り値
(ソース:mikeschinkel.com

このスクリーンショットをわかりやすくするため wp30.devに、ローカルコンピューターでのみ実行されるドメインを示します。現在はWordPress 3.0.1のインスタンスであり、ラップトップの127.0.0.1(と同じ localhost)で構成されており、このようなアドホックな例をテストするために使用しています。VirtualHostXをMac OS Xの便宜のために使用して、プライベートなルーティング不可能な.devドメインをセットアップしましたが、コンピューターのホストファイルと?httpd.confファイル。

ちなみに、チャイルドテーマに慣れていない場合は、他に役立つ2つのWordPressアンサーがあります。


うわー、素晴らしい答え。私は現在取り組んでいるテーマに怠けていて、子テーマを設定しませんでしたが、これは将来非常に役立ちます。そのスクリプトもおめでとうございます。よくコーディングされています。ありがとう!
マイケルクレンショー

こんにちは、いい答えです!私は通常使用しますget_stylesheet_directory_uri()。私は普通のオールを使うべきget_stylesheet_directory()ですか?
djb

13

テーマの構造全体は、template(親テーマフォルダーnamreをstylesheet保持する)と(子テーマフォルダーnamrを保持する)の2つのオプションの上に構築されます。使用される子テーマがない場合、これらは同じです。

オプションに直接アクセスするのではなく、フィルターに柔軟性を持たせるために、それに応じてget_template()およびがありget_stylesheet()ます。

唯一欠けているのは、これらをテーマフォルダーの場所と組み合わせることです。これはで行うことができますget_theme_root_uri()し、再び便利に包まれたget_template_directory_uri()get_stylesheet_directory_uri()

[get_]bloginfo()template_directorystylesheet_directory引数は単にこれらをラップし、そのようにそれを使用する理由はほとんどありません。ディレクトリ(一般的にはローカルパスに関連する)を引数に持つが、URLを返すことで混乱するだけだと思います。

要約:

  • 唯一のテーマまたは親テーマget_template_directory_uri()を参照するために使用
  • 使用get_stylesheet_directory_uri()のみまたは子テーマ

-1

これを使う (dirname(get_bloginfo('stylesheet_url')))


1
これが他のソリューションよりも優れている理由の説明はありませんか?
FUXIA
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.