Ich muss die URL meines Themenverzeichnisses abrufen, um auf ein Bild im Bild- / Kopfzeilenverzeichnis des Themas zu verweisen. Wie geht das in PHP?
Ich muss die URL meines Themenverzeichnisses abrufen, um auf ein Bild im Bild- / Kopfzeilenverzeichnis des Themas zu verweisen. Wie geht das in PHP?
Antworten:
Diese Funktion wird zurückkehren das Thema Verzeichnis URL , so dass Sie es in anderen Funktionen verwenden können:
get_bloginfo('template_directory');
Alternativ wird diese Funktion echo das Thema Verzeichnis URL an den Browser:
bloginfo('template_directory');
Ein Beispiel für ein Bild im Themenordner images/headers
wäre also:
<img src="<?php bloginfo('template_directory'); ?>/images/headers/image.jpg" />
get_template_directory_uri()
Was @EAMann gesagt hat, mit einer Einschränkung. Eric hat Recht mit der allgemeinen Herangehensweise und der Funktionsweise bloginfo()
und get_bloginfo()
der Übergabe des Parameters 'template_directory'
, um den Wert zu erhalten, den Sie für (die meisten) Themen benötigen.
Es gibt jedoch eine Einschränkung und diese Einschränkung gilt für die neueren untergeordneten Themen . Wenn Sie ein untergeordnetes Design verwenden, 'template_directory'
ist dies wahrscheinlich nicht das, was Sie möchten, es sei denn, Sie versuchen tatsächlich, auf ein Bild zu verweisen, das sich im übergeordneten Designverzeichnis befindet. Stattdessen möchten Sie für untergeordnete Themen wahrscheinlich Folgendes übergeben stylesheet_directory
(Ich weiß, ich weiß, die Namen sagen Ihnen nicht, was sie sind, aber hey, so ist das eben!) Etwas von Erics Antwort zu übernehmen, stylesheet_directory
würde so aussehen ( Ich habe das Beispiel gekürzt, damit es nicht umbrochen wird.
<img src="<?php bloginfo('stylesheet_directory'); ?>/images/header.jpg" />
Um den Punkt zu veranschaulichen, habe ich eine schnelle Standalone-Datei geschrieben, die Sie im Stammverzeichnis Ihrer Website ablegen test.php
und ausführen können, um zu sehen, was sie ausgibt. Führen Sie zuerst ein reguläres Thema wie TwentyTen aus, und führen Sie dann ein untergeordnetes Thema aus:
<?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, werden Sie vielleicht bemerken, dass es viel mehr gibt, an was Sie weitergeben können, bloginfo()
und get_bloginfo()
; Lesen Sie den Code und den Screenshot unten, um Ideen zu erhalten.
Auf dem Screenshot sehen Sie, dass dies stylesheet_directory
dasselbe Ergebnis liefert wie 'template_directory'
bei einem normalen Thema, jedoch mit einem anderen Wert und wahrscheinlich dem Wert, den Sie für ein untergeordnetes Thema benötigen.
(Quelle: mikeschinkel.com )
Aus Gründen der Übersichtlichkeit wird in diesem Screenshot
wp30.dev
eine Domain angezeigt, die nur auf meinem lokalen Computer ausgeführt wird. Es handelt sich derzeit um eine Instanz von WordPress 3.0.1, die auf meinem Laptop127.0.0.1
(genauso wielocalhost
auf meinem Laptop) konfiguriert ist, und ich verwende sie zum Testen von Ad-hoc-Beispielen wie diesem. Ich habe VirtualHostX unter Mac OS X verwendet, um diese privaten, nicht routbaren.dev
Domänen einzurichten. Jeder kann dies jedoch manuell tun, indem er die Hosts-Datei des Computers und das Symbol? httpd.conf Datei.
Übrigens, falls Sie nicht mit untergeordneten Themen vertraut sind, wo sind zwei andere WordPress-Antworten, die helfen könnten:
get_stylesheet_directory_uri()
. Soll ich einfach ol 'verwenden get_stylesheet_directory()
?
Die gesamte Struktur des Themas template
basiert auf zwei Optionen - (übergeordnetes Thema, Ordnername) und stylesheet
(untergeordnetes Thema, Ordnername). Wenn kein untergeordnetes Thema verwendet wird, sind diese identisch.
Um die Flexibilität von Filtern zu haben, anstatt direkt auf die Option zuzugreifen, gibt es dementsprechend get_template()
und get_stylesheet()
.
Jetzt fehlt nur noch die Verknüpfung mit dem Speicherort des Themenordners. Dies kann mit gemacht werden get_theme_root_uri()
und wieder bequem in gewickelt get_template_directory_uri()
und get_stylesheet_directory_uri()
.
[get_]bloginfo()
mit template_directory
oder stylesheet_directory
Argumente umschließen nur diese und es gibt wenig Grund, es so zu verwenden. Ich würde sagen, es ist nur verwirrend, wenn das Argument "Verzeichnis" lautet (bezieht sich normalerweise auf lokale Pfade), aber URLs zurückgibt.
Summe:
get_template_directory_uri()
diese Option, um nur auf ein übergeordnetes Thema zu verweisenget_stylesheet_directory_uri()
um nur Kinder Thema