¿Cómo obtengo la URL del tema en PHP?
4 respuestas
- votos
-
- 2010-08-21
Estafunción devolverá la URL del directorio detemaspara quepueda usarlaen otrasfunciones:
get_bloginfo('template_directory');
Alternativamente,estafunción repetirá la URL del directorio detemasen elnavegador:
bloginfo('template_directory');
Portanto,unejemplo de unaimagenen la carpeta detemas
images/headers
sería:<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:esto le dará la ruta altema *principal * si actualmenteestá usando untema secundario ynoeltema secundario activo.Una respuestamás larga a continuaciónexplicaesto conmás detalle.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
-
Simplementepuede usar `get_template_directory_uri ()`You can simply use `get_template_directory_uri()`
- 2
- 2018-06-20
- Pei
-
- 2010-08-21
Lo que @EAMann dijo,con una advertencia. Erictiene razón sobreelenfoquegeneral y sobre cómofuncionan lasfunciones
bloginfo ()
yget_bloginfo ()
y sobre cómopasarelparámetro'template_directory'
para obtenerel valor quenecesitapara (lamayoría) de lostemas.Sinembargo,hay una advertencia yesa advertencia es con los Temas secundarios másnuevos. Siestá utilizando untema hijo,entonces
'template_directory'
probablementeno sea lo que desea amenos queestéintentando hacer referencia a unaimagen queestáen el directorio deltemapadre. En lugar de lostemasparaniños,lo queprobablemente quierasespasarstylesheet_directory
(lo sé,lo sé,losnombresnote dicen lo que son,perobueno,¡asíes!). La respuesta de Eric usandostylesheet_directory
se vería así (acortéelejemplopara queno se ajustara):& lt;img src="& lt;?phpbloginfo ('stylesheet_directory');? >/images/header.jpg"/>
Parailustrarelpunto,escribí un archivoindependiente rápido quepuede colocaren la raíz de su sitio web como
test.php
yejecutarlopara ver lo quegenera. Primeroejecute con untema regular como TwentyTen y luegoejecute con untema hijo:& lt;?php /* *test.php:prueba la diferenciaentre lostemas regularese infantiles * */ incluir "wp-load.php"; $bloginfo_params=matriz ( 'admin_email', 'atom_url', 'juego de caracteres', 'comments_atom_url', 'comments_rss2_url', 'descripción', 'casa', 'html_type', 'idioma', 'nombre', 'pingback_url', 'rdf_url', 'rss2_url', 'rss_url', 'Sitio URL', 'stylesheet_directory', 'stylesheet_url', 'template_directory', 'template_url', 'dirección deltexto', 'url', 'versión', 'wpurl', ); echo '& lt;tableborder="1" >'; foreach ($bloginfo_params como $param) { $info=get_bloginfo ($param); echo "& lt;tr > & lt;th > {$param}: & lt;/th > & lt;td > {$info} & lt;/td > & lt;/tr >"; } echo '& lt;/table >';
Sinotas cosas,esposible quenotes que haymuchomásen lo quepuedespasar a
bloginfo ()
yget_bloginfo ()
;estudieel código y la captura depantalla a continuaciónpara obtenerideas.Almirar la captura depantalla,puede ver que
stylesheet_directory
devuelve lomismo que'template_directory'
para untemanormalpero con un valor diferente,yprobablementeel valor quenecesitapara untema hijo.
(fuente: mikeschinkel.com )Paramayor claridaden esta captura depantalla,
wp30.dev
es un dominio que solo seejecuta en mi computadora local. Es actualmente unainstancia de WordPress 3.0.1 y está configuradoen127.0.0.1
(igual quelocalhost
)en mi computadoraportátil y lo uso paraprobarejemplos ad-hoc comoeste. Usé VirtualHostX como una convenienciaen Mac OS Xpara ayudarme a configuraresos códigosprivadosnoenrutables. > dominios .dev pero cualquierapuede hacerlomanualmente editarel archivo de hosts de la computadora yel ? archivo httpd.conf.Por cierto,en caso de quenoestéfamiliarizado con Temasparaniños ,¿dónde hay otras dos respuestas de WordPress quepodrían ayudar?
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:
-
Vaya,gran respuesta.Me dioperezaeltemaen el queestoytrabajando ahora yno configuré untema secundario,peroesto serámuy útilen elfuturo.Felicitacionesporeseguióntambién.Bien codificado.¡Gracias!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
-
Hola,buena respuesta!Normalmente uso `get_stylesheet_directory_uri ()`.¿Debería usar un simple 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 laestructura deltema sebasaen dos opciones:
plantilla
(que contieneelnombre de la carpeta deltemaprincipal) yhoja deestilo
(que contieneelnombre de la carpeta deltema secundario). Sino se utilizaningúntema hijo,estos son losmismos.Paratenerflexibilidad defiltros,en lugar de acceder a la opción directamente,existen
get_template ()
yget_stylesheet ()
.Ahora lo único quefaltaes combinarlos con la ubicación de la carpeta detemas. Esto sepuede hacer con
get_theme_root_uri ()
ynuevamente convenientementeenvueltoenget_template_directory_uri ()
y < código>get_stylesheet_directory_uri () .[get_]bloginfo ()
contemplate_directory
o Los argumentosstylesheet_directory
simplemente losenvuelven y haypocas razonespara usarlos así. Yo diría que soloes confusotener un argumento que dice directorio (comúnmente se relaciona con rutas locales),pero devuelve URL.Resumen:
- use
get_template_directory_uri ()
para referirse altema único oprincipal - use
get_stylesheet_directory_uri ()
para tema único o secundario
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
-
-
¿No hayexplicación depor quéestoesmejor que las otras soluciones?No explanation why this is better than the other solutions?
- 1
- 2012-11-05
- fuxia
-
Necesito obtener la URL demi directorio detemaspara hacer referencia a unaimagenen el directorioimage/headers deltema.¿Cómo se haceestoen PHP?