Wie erhalte ich die Themen-URL in PHP?
4 Antworten
- Stimmen
-
- 2010-08-21
Diese Funktiongibt die Themen-Verzeichnis-URL zurück,sodass Sie siein anderen Funktionen verwenden können:
get_bloginfo('template_directory');
Alternativgibt diese Funktion die URL des Themenverzeichnisses an den Browser zurück:
bloginfo('template_directory');
Ein Beispielfürein Bildim Ordnerthemen
images/headers
wäre also:<img src="<?php bloginfo('template_directory'); ?>/images/headers/image.jpg" />
This function will return the theme directory URL so you can use it in other functions:
get_bloginfo('template_directory');
Alternatively, this function will echo the theme directory URL to the browser:
bloginfo('template_directory');
So an example for an image in the themes
images/headers
folder would be:<img src="<?php bloginfo('template_directory'); ?>/images/headers/image.jpg" />
-
HINWEIS: Auf diese Weiseerhalten Sie den Pfad zum * übergeordneten * Thema,wenn Sie derzeitein untergeordnetes Thema undnicht das aktive untergeordnete Thema verwenden.Eine längere Antwort untenerklärt dies ausführlicher.NOTE: this will give you the path to the *parent* theme if you are currently using a child theme, and not the active child theme. A longer answer below explains this in more detail.
- 0
- 2016-10-19
- Jason
-
Sie könneneinfachget_template_directory_uri () verwendenYou can simply use `get_template_directory_uri()`
- 2
- 2018-06-20
- Pei
-
- 2010-08-21
Was @EAMann mit einer Einschränkunggesagt hat. Eric hat Rechtmit dem allgemeinen Ansatz und der Funktionsweise der Funktionen
bloginfo ()
undget_bloginfo ()
und der Übergabe des Parameters'template_directory'
um den Wert zuerhalten,den Siefür (diemeisten) Themenbenötigen.Esgibt jedocheine Einschränkung,und diese Einschränkung giltfür dieneueren untergeordneten Themen . Wenn Sieein untergeordnetes Thema verwenden,ist
'template_directory'
wahrscheinlichnicht das,was Siemöchten,es sei denn,Sie versuchentatsächlich,aufein Bild zu verweisen,das sichim übergeordneten Themenverzeichnisbefindet. Stattdessenmöchten Siefür untergeordnete Themen wahrscheinlichstylesheet_directory
übergeben (Ich weiß,ich weiß,die Namen sagen Ihnennicht,was sie sind,aber hey,soisteseben!) Erics Antwortmitstylesheet_directory
würdefolgendermaßen aussehen (ich habe das Beispielgekürzt,damitesnicht umbrochen wird):& lt;img src="& lt ;?phpbloginfo ('stylesheet_directory') ;? >/images/header.jpg"/>
Um den Punkt zu veranschaulichen,an demicheine eigenständige Schnelldateigeschrieben habe,können Sie das Stammverzeichnis Ihrer Website als
test.php
ablegen und ausführen,um zu sehen,was sie ausgibt. Führen Sie zuerstein reguläres Thema wie TwentyTen aus und dannein untergeordnetes Thema:& lt ;?php /* *test.php - Testen Sie den Unterschied zwischen regulären und untergeordneten Themen * * */ include "wp-load.php"; $bloginfo_params=array ( 'admin_email', 'atom_url', 'Zeichensatz', 'comment_atom_url', 'comment_rss2_url', 'Beschreibung', 'Zuhause', 'html_type', 'Sprache', 'Name', 'pingback_url', 'rdf_url', 'rss2_url', 'rss_url', 'Seiten-URL', 'stylesheet_directory', 'stylesheet_url', 'template_directory', 'template_url', 'Textrichtung', 'url', 'Ausführung', 'wpurl', ); echo '& lt;tableborder="1" >'; foreach ($bloginfo_params als $param) { $info=get_bloginfo ($param); Echo "& lt;tr > & lt;th > {$param}: & lt;/th > & lt;td > {$info} & lt;/td > & lt;/tr >"; }} Echo '& lt;/table >';
Wenn Sie Dingebemerken,werden Sie vielleichtfeststellen,dass das,was Sie an
bloginfo ()
undget_bloginfo ()
übergeben können,noch vielmehrenthält. Lesen Sie den Code und den Screenshot unten,um Ideen zuerhalten.Wenn Sie sich den Screenshot ansehen,sehen Sie,dass
stylesheet_directory
dasselbe wie'template_directory'
fürein reguläres Thema zurückgibt,jedocheinen anderen Wert und wahrscheinlich den Wert,den Siebenötigenein untergeordnetes Thema.
(Quelle: mikeschinkel.com )Zur Verdeutlichung dieses Screenshots:
wp30.dev
isteine Domain,dienur ausgeführt wird aufmeinem lokalen Computer. Esist derzeit eine Instanz von WordPress 3.0.1 undes ist unter127.0.0.1
konfiguriert (wielocalhost
) aufmeinem Laptop undichbenutzees zum Testen solcher Ad-hoc-Beispiele. Ich habe VirtualHostX als Annehmlichkeit unter Mac OS X verwendet,um diesenprivaten,nicht routbaren.dev Domains,aberjeder kann diesmanuelltun Bearbeiten der Hosts-Datei des Computers und der ? httpd.conf-Datei. Übrigens,falls Sienichtmit untergeordneten Themen vertraut sind,wo sind zwei andere WordPress-Antworten,die helfen könnten:
What @EAMann said, with a caveat. Eric is right about the general approach and how the functions
bloginfo()
andget_bloginfo()
work and about how to pass the parameter'template_directory'
to get the value you need for (most) themes.However there is a caveat and that caveat is with the newer Child Themes. If you are using a child theme then
'template_directory'
is probably not what you want unless you are actually trying to refer to an image that is in the parent theme directory. Instead for child themes what you probably want is to passstylesheet_directory
(I know, I know, the names don't tell you what they are but hey, that's just the way it is!) Borrowing somewhat from Eric's reply usingstylesheet_directory
would look like this (I shortened the example so it would not wrap):<img src="<?php bloginfo('stylesheet_directory'); ?>/images/header.jpg" />
To illustrate the point I wrote a quick standalone file you can drop in your website's root as
test.php
and run to see what it outputs. First run with a regular theme like TwentyTen then run with a child theme:<?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>';
If you notice things you might notice that there's a lot more to what you can pass to
bloginfo()
andget_bloginfo()
; study the code and the screenshot below for ideas.Looking at the screenshot you can see that
stylesheet_directory
returns the same thing as'template_directory'
for a regular theme but a different value, and probably the value you need for a child theme.
(source: mikeschinkel.com)For clarity on this screenshot,
wp30.dev
is a domain that runs only on my local computer. It is currently an instance of WordPress 3.0.1 and it is configured at127.0.0.1
(same aslocalhost
) on my laptop and I use it for testing ad-hoc examples like this. I used VirtualHostX as a convenience on the Mac OS X to help me set up those private non-routable.dev
domains but anyone can do it manually by editing the computer's hosts file and the ? httpd.conf file.By the way, in case you are not familiar with Child Themes where are two other WordPress Answers that might help:
-
Wow,tolle Antwort.Ich warfaulmit dem Thema,an demichgerade arbeite,und habe kein untergeordnetes Themaeingerichtet,aber dies wirdin Zukunft sehr hilfreich sein.Herzlichen Glückwunsch auch zu diesem Skript.Gut codiert.Vielen Dank!Wow, great answer. I was lazy with the theme I'm working on now and didn't set up a child theme, but this will be very helpful in the future. Congratulations on that script too. Well-coded. Thanks!
- 0
- 2010-08-21
- Michael Crenshaw
-
Hallo,schöne Antwort!Normalerweisebenutzeich "get_stylesheet_directory_uri ()".Sollteich daseinfache alteget_stylesheet_directory () verwenden?Hi, nice answer! I usually use `get_stylesheet_directory_uri()`. Should I be using plain ol' `get_stylesheet_directory()`?
- 0
- 2012-01-18
- djb
-
- 2012-03-26
Diegesamte Struktur des Themasbasiert auf zwei Optionen:
template
(mit dem Namen des übergeordneten Themenordners) undStylesheet
(mit dem Namen des untergeordneten Themenordners). Wenn kein untergeordnetes Thema verwendet wird,sind dieseidentisch.Um die Flexibilität der Filter zugewährleisten,anstatt direkt auf die Option zuzugreifen,gibt es dementsprechend
get_template ()
undget_stylesheet ()
.Jetztfehltnurnoch,diesemit dem Speicherort des Themenordners zu kombinieren. Dies kannmit
get_theme_root_uri ()
erfolgen underneutbequeminget_template_directory_uri ()
und < code>get_stylesheet_directory_uri () .[get_]bloginfo ()
mittemplate_directory
oderstylesheet_directory
-Argumente umschließen diese lediglich,undesgibt wenig Grund,sie so zu verwenden. Ich würde sagen,esistnur verwirrend,wenn das Argument Verzeichnisenthält (bezieht sichnormalerweise auf lokale Pfade),aber URLs zurückgibt.Zusammenfassung:
- Verwenden Sie
get_template_directory_uri ()
,um auf nur oder übergeordnetes Thema zu verweisen - Verwenden Sie
get_stylesheet_directory_uri ()
nurfür oder untergeordnete Themen
The whole structure of theme builds on top of two options -
template
(holding parent theme folder namre) andstylesheet
(holding child theme folder namr). If there is no child theme used these are the same.To have flexibility of filters, rather than access option directly, there are accordingly
get_template()
andget_stylesheet()
.Now the only thing is missing is to combine those with themes folder location. This can be done with
get_theme_root_uri()
and again conveniently wrapped inget_template_directory_uri()
andget_stylesheet_directory_uri()
.[get_]bloginfo()
withtemplate_directory
orstylesheet_directory
arguments merely wraps these and there is little reason to use it like that. I'd say it is only confusing by having argument saying directory (commonly relates to local paths), but returning URLs.Sumary:
- use
get_template_directory_uri()
to refer to only or parent theme - use
get_stylesheet_directory_uri()
to only or child theme
-
-
Keine Erklärung,warum diesbesserist als die anderen Lösungen?No explanation why this is better than the other solutions?
- 1
- 2012-11-05
- fuxia
-
Ichmuss die URLmeines Themenverzeichnisses abrufen,um aufein Bildim Bild-/Kopfzeilenverzeichnis des Themas zu verweisen.Wie wird dasin PHPgemacht?