Frage

Ich muss die URL meines Themas -Verzeichnisses erhalten, um ein Bild im Bild-/Header -Verzeichnis des Themas zu verweisen. Wie wird das in PHP gemacht?

War es hilfreich?

Lösung

Diese Funktion wird Rückkehr Die Themenverzeichnis -URL, damit Sie sie in anderen Funktionen verwenden können:

get_bloginfo('template_directory');

Alternativ wird diese Funktion Echo Die Themenverzeichnis -URL zum Browser:

bloginfo('template_directory');

Also ein Beispiel für ein Bild in den Themen images/headers Ordner wäre:

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

Andere Tipps

Was @Amann sagte mit einer Einschränkung. Eric hat Recht mit dem allgemeinen Ansatz und wie die Funktionen bloginfo() und get_bloginfo() Arbeiten Sie und wie man den Parameter übergibt 'template_directory' Um den Wert zu erhalten, den Sie für (die meisten) Themen benötigen.

Es gibt jedoch eine Einschränkung und das Vorbehalt ist mit dem neueren Kinderthemen. Wenn Sie ein Kinderthema verwenden, dann 'template_directory' ist wahrscheinlich nicht das, was Sie wollen, es sei denn, Sie versuchen tatsächlich, sich auf ein Bild zu beziehen, das sich im übergeordneten Themenverzeichnis befindet. Stattdessen für Kinderthemen wollen Sie wahrscheinlich passieren stylesheet_directory (Ich weiß, ich weiß, die Namen sagen dir nicht, was sie sind, aber hey, so ist es so wie es ist!) Liehen Sie etwas aus Erics Antwort mithilfe der Antwort aus stylesheet_directory würde so aussehen (ich habe das Beispiel verkürzt, damit es nicht wickelte):

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

Um den Punkt zu veranschaulichen, den ich eine kurze eigenständige Datei geschrieben habe test.php Und rennen Sie, um zu sehen, was es ausgibt. Erst mit einem regulären Thema wie Twentyten rennen und dann mit einem Kinderthema laufen:

<?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>';

Wenn Sie Dinge bemerken, die Sie möglicherweise bemerken, dass das, was Sie übergeben können, noch viel mehr gibt bloginfo() und get_bloginfo(); Studieren Sie den Code und den Screenshot unten, um Ideen zu erhalten.

Wenn Sie sich den Screenshot ansehen, können Sie das sehen stylesheet_directory Gibt das Gleiche zurück wie 'template_directory' Für ein reguläres Thema, aber einen anderen Wert und wahrscheinlich den Wert, den Sie für ein Kinderthema benötigen.

The return values of get_bloginfo() with and without a Child Theme in WordPress
(Quelle: mikeschinkel.com)

Für Klarheit dieses Screenshots, wp30.dev ist eine Domain, die nur auf meinem lokalen Computer ausgeführt wird. Es ist derzeit eine Instanz von WordPress 3.0.1 und ist bei konfiguriert 127.0.0.1 (gleich wie localhost) auf meinem Laptop und ich verwende es zum Testen von Ad-hoc-Beispielen wie diesem. ich benutzte VirtualHostx Als Bequemlichkeit auf dem Mac OS X hilft mir die Einrichtung dieser privaten Nicht-Routable .dev Domains, aber jeder kann es manuell tun, indem er die Hosts -Datei des Computers und die? httpd.conf Datei.

Übrigens, falls Sie nicht vertraut sind Kinderthemen Wo sind zwei weitere WordPress -Antworten, die helfen könnten:

Die gesamte Struktur des Themas baut auf zwei Optionen auf - template (Halten des übergeordneten Themasordners Namre) und stylesheet (Holding Child Theme Ordner NAMR). Wenn kein Kinderthema verwendet wird, sind diese gleich.

Um die Flexibilität von Filtern zu haben, anstatt direkt auf Zugriffsoption zu kommen, gibt es entsprechend get_template() und get_stylesheet().

Jetzt fehlt nur, dass sie diejenigen mit dem Ordnerort des Themas kombinieren. Dies kann mit erfolgen get_theme_root_uri() und wieder bequem eingewickelt get_template_directory_uri() und get_stylesheet_directory_uri().

[get_]bloginfo() mit template_directory oder stylesheet_directory Argumente wickeln nur diese und es gibt wenig Grund, es so zu verwenden. Ich würde sagen, es ist nur verwirrend, wenn man ein Argument sagt, das Verzeichnis mit dem Verzeichnis (gewöhnlich auf lokale Wege bezieht), aber die Rückgabe von URLs.

Sumary:

  • verwenden get_template_directory_uri() zu beziehen nur oder Elternteil Thema
  • verwenden get_stylesheet_directory_uri() zu nur oder Kind Thema

ich benutze das(dirname(get_bloginfo('stylesheet_url')))

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit wordpress.stackexchange
scroll top