Como faço para obter o URL do tema no PHP?
4 respostas
- votos
-
- 2010-08-21
Estafunçãoirá o URL do diretóriotemáticopara que vocêpossa usá-loem outrasfunções:
get_bloginfo('template_directory');
Alternativamente,estafunção será echo o URL do diretóriotemáticopara onavegador:
bloginfo('template_directory');
Então,umexemplopara umaimagemnostemas
images/headers
apasta seria:<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: Isso lhe dará o caminhopara o * Pai * Theme se vocêestiver usando umtema de criança,e não otema da criança ativa.Uma respostamais abaixoexplicaissoem mais detalhes.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
-
Vocêpode simplesmente usar `get_template_directory_uri ()`)You can simply use `get_template_directory_uri()`
- 2
- 2018-06-20
- Pei
-
- 2010-08-21
O que @eamann disse,com uma ressalva. Ericestá certo sobre a abordagemgerale como asfunções
bloginfo ()
eget_bloginfo ()
trabalhoe sobre comopassar oparâmetro'template_directory'
Para obter o valor que vocêprecisa (amaioria)temas.Noentanto,há uma advertênciae que cárie é com ostemas de criançamais recentes . Se vocêestiver usando umtemafilho,
'template_directory'
provavelmentenão é o que você deseja,amenos que vocêesteja realmentetentando se referir a umaimagem queestáno diretório dotemapai. Em vez disso,para ostemas da criança,o que vocêprovavelmente quer épassarStylesheet_Directory (Eu sei,eu sei,osnomesnão lhe dizem o que são,mas,é assim que é!) Pedaçando umpouco de A resposta de Eric usando StylesHeet_Directory
seriaparecido comisso (encurtiei oexemplopara quenão seenvolva):.
& lt;img src="& lt;?phpbloginfo ('stylesheet_directory');? >/gt;/gt;/gt;
Parailustrar oponto queescrevi um arquivo autônomo rápido,vocêpode cairna raiz do seu site como
teste.php
e executepara ver o queele éproduzido. Primeira corrida com umtema regular,como vintee depois correr com umtema de criança:& lt;?php /* *test.php - Teste a diferençaentretemas regularese infantis * */ incluem "wp-load.php"; $bloginfo_params=array ( 'admin_email', 'Atom_url', 'charset', 'Comments_atom_url', 'Comments_rss2_url', 'Descrição', 'casa', 'html_type', 'língua', 'nome', 'pingback_url', 'rdf_url', 'rss2_url', 'rss_url', 'URL do site', 'Stylesheet_Directory', 'StylesHeet_url', 'Template_Directory', 'template_url', 'direção dotexto', 'URL', 'versão', 'wpurl', ); echo '& lt;fronteira demesa="1" >'; foreach ($bloginfo_params como $param) { $info=get_bloginfo ($param); echo "& lt;tr > & lt; {$param}: & lt;/th > & lt;td > {$info} & lt;/td >"; "; } echo '& lt;/tabela >';
Se vocênotar coisas que vocêpodenotar que hámuitomaispara o que vocêpodepassarpara
bloginfo ()
eget_bloginfo ()
; Estude o códigoe a captura detela abaixoparaidéias.Olhandopara a captura detela Vocêpode ver que
stylesheet_directory
retorna amesma coisa que'template_directory'
para umtema regular,mas um valor diferente,e provavelmente o valor que vocêprecisapara umtema de criança.
(Fonte: mikeschinkel.com ).
para clarezanesta captura detela,
wp30.dev
é um domínio que éexecutado apenas nomeu computador local. Atualmente é umainstância do WordPress 3.0.1e é configuradoem127.0.0.1
(omesmo quelocalhost
)nomeu laptope eu uso paratestarexemplos ad-hoc comoeste. Eu usei virtualhostx como uma conveniênciano Mac OS Xparame ajudar a configuraressesnão-roteáveis .dev domínios,mas qualquer umpodefazê-lomanualmentepor Editando o arquivo dos hosts do computadore o ? arquivo httpd.conf. Bythe way,caso vocênãoestejafamiliarizado com ostemas da criança ondeestão outras respostas do WordPress quepodem ajudar:
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:
-
Uau,ótima resposta.Euerapreguiçoso com otema queestoutrabalhando agorae nãomontou umtema de criança,masisso serámuito útilnofuturo.Parabénsporesse scripttambém.Bem codificado.Obrigado!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
-
Oi,boa resposta!Eu costumo usar `get_stylesheet_directory_uri ()`.Eu deveriaestar usando o liso 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
Toda aestrutura dotema constróiem cima de duas opções -
modelo
(mantendo apasta dotemapainamre)estylesheet
(segurando apasta dotema da criançanamr). Senão houver umtemafilho usado,estes são osmesmos.Paraterflexibilidade defiltros,em vez de acesso opcional diretamente,há,em conformidade,
get_template ()
eget_stylesheet ()
.Agora a única coisaestáfaltando é combinar aqueles com o local dapasta detemas. Issopode serfeito com
get_theme_root_uri ()
e novamente convenientementeembrulhadoemget_template_directory_uri ()
e < código>get_stylesheet_directory_uri () .[get_]bloginfo ()
comtemplate_directory
ouStylesHeet_Directory
Argumentos simplesmenteenvolveestese hápouca razãopara usá-lo assim. Eu diria que é apenas confusotendo argumento dizendo diretório (comumente relacionado com caminhos locais),mas retornando URLs.Sumário:
- use
get_template_directory_uri ()
para se referir a apenas oupai tema - use
get_stylesheet_directory_uri ()
para somente ou criança tema
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
-
-
Nenhumaexplicaçãoporqueisso émelhor que as outras soluções?No explanation why this is better than the other solutions?
- 1
- 2012-11-05
- fuxia
-
Eupreciso obter o URL domeu diretóriotemáticoparafazer referência a umaimagemno diretório deimagem/cabeçalhos dotema.Comoisso éfeitono PHP?