Come ottengo l'URL del tema in PHP?
4 risposta
- voti
-
- 2010-08-21
Questafunzione restituirà l'URL della directory deltemain modo chetupossa usarloin altrefunzioni:
get_bloginfo('template_directory');
In alternativa,questafunzione riprodurrà l'URL della directory deltemanelbrowser:
bloginfo('template_directory');
Quindi unesempioper un'immaginenella cartella deitemi
images/headers
sarebbe:<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" />
-
NOTA: questoti daràilpercorso altema *genitore * se stai attualmente utilizzando untemafiglioe noniltemafiglio attivo.Una rispostapiù lunga di seguito lo spiegain modopiù dettagliato.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
-
Puoi semplicemente usare `get_template_directory_uri ()`You can simply use `get_template_directory_uri()`
- 2
- 2018-06-20
- Pei
-
- 2010-08-21
Cosa ha detto @EAMann ,con un avvertimento. Eric ha ragione sull'approcciogeneralee su comefunzionano lefunzioni
bloginfo ()
eget_bloginfo ()
e su comepassareilparametro'template_directory'
per ottenereil valorenecessarioper (lamaggiorparte) deitemi.Tuttavia,vi è un avvertimentoe questo avvertimento riguardai più recenti temi secondari . Se stai usando untemafiglio,allora
'template_directory'
probabilmentenon è quello che vuoi ameno chetunon stiaeffettivamente cercando difare riferimento a un'immagine che sitrovanella directory deltemaprincipale. Inveceperi temifigli quello cheprobabilmente vuoi èpassarestylesheet_directory
(lo so,lo so,i nominonti dicono cosa sonoma hey,èproprio così!) Prendendoin prestito unpo 'da La risposta di Eric utilizzandostylesheet_directory
sarebbe simile a questa (ho accorciato l'esempioin modo chenon andasse a capo):& lt;img src="& lt;?phpbloginfo ('stylesheet_directory');? >/images/header.jpg"/>
Perillustrareilpuntoin cui ho scritto unfile autonomo velocepuoiinserirenella radice deltuo sito web come
test.php
edeseguireper vedere cosaproduce. Eseguiprima untemanormale come TwentyTen,quindiesegui untemafiglio:& lt;?php /* *test.php - Verifica la differenzatratemi normalie perbambini * */ includere "wp-load.php"; $bloginfo_params=array ( "admin_email", "atom_url", "charset", "comments_atom_url", 'comments_rss2_url', 'descrizione', 'casa', "html_type", 'linguaggio', 'nome', "pingback_url", "rdf_url", "rss2_url", "rss_url", 'indirizzo del sito', 'stylesheet_directory', "stylesheet_url", 'template_directory', "template_url", "text_direction", "url", 'versione', 'wpurl', ); echo '& lt;tableborder="1" >'; foreach ($bloginfo_params as $param) { $info=get_bloginfo ($param); echo "& lt;tr > & lt;th > {$param}: & lt;/th > & lt;td > {$info} & lt;/td > & lt;/tr >"; } echo "& lt;/table >";
Senoti cosepotrestinotare che c'èmolto dipiù da quello chepuoipassare a
bloginfo ()
eget_bloginfo ()
; studiail codicee lo screenshot qui sottoperidee.Guardando lo screenshotpuoi vedere che
stylesheet_directory
restituisce la stessa cosa di'template_directory'
per untemanormalema un valore diversoe probabilmenteil valore cheti serve untema child.
(fonte: mikeschinkel.com )Per chiarezza su questo screenshot,
wp30.dev
è un dominio chefunziona solo sulmio computer locale. È attualmente un'istanza di WordPress 3.0.1e it è configuratoin127.0.0.1
(uguale alocalhost
) sulmio laptope lo uso pertestareesempi ad hoc come questo. Ho usato VirtualHostX per comodità su Mac OS Xper aiutarmi a configurare quei.dev ma chiunquepuòfarlomanualmentetramite modificandoilfile hosts del computere ilfile ? file httpd.conf. Aproposito,senon haifamiliarità coni temi perbambini ,dove ci sono altre due risposte di WordPress chepotrebbero aiutarti:
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,ottima risposta.Eropigro coniltema su cui sto lavorando orae non hoimpostato untemafiglio,ma questo saràmolto utilein futuro.Congratulazioni ancheper quella sceneggiatura.Ben codificato.Grazie!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
-
Ciao,bella risposta!Di solito uso "get_stylesheet_directory_uri ()".Dovrei usareil semplice ol '`get_stylesheet_directory ()`?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
L'intera struttura deltema sibasa su due opzioni:
template
(tenendoilnome della cartella deltemaprincipale)efoglio di stile
(tenendopremutoilnome della cartella deltema secondario). Senon viene utilizzato alcuntemafiglio,questi sonogli stessi.Per avere laflessibilità deifiltri,piuttosto che accedere direttamente alle opzioni,ci sono di conseguenza
get_template ()
eget_stylesheet ()
.Ora l'unica cosa chemanca è combinare quelli con laposizione della cartella deitemi. Questopuòesserefatto con
get_theme_root_uri ()
e dinuovo comodamente racchiusoinget_template_directory_uri ()
e < code>get_stylesheet_directory_uri () .[get_]bloginfo ()
contemplate_directory
o Gli argomenti distylesheet_directory
li racchiudono semplicementee non c'èmotivo di usarliin questomodo. Direi che è solofonte di confusione avendo un argomento che dice directory (comunemente si riferisce apercorsi locali),ma restituisce URL.Riepilogo:
- utilizza
get_template_directory_uri ()
perfare riferimento altema solo oprincipale - utilizza
get_stylesheet_directory_uri ()
per untema solo o secondario
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
-
-
Nessuna spiegazioneperché questo siamigliore delle altre soluzioni?No explanation why this is better than the other solutions?
- 1
- 2012-11-05
- fuxia
-
Hobisogno di ottenere l'URL dellamia directory deltemaperfare riferimento a un'immaginenella directoryimage/headers deltema.Come sifain PHP?