Necesito obtener la URL de mi directorio de temas para hacer referencia a una imagen en el directorio image / headers del tema. ¿Cómo se hace esto en PHP?
Necesito obtener la URL de mi directorio de temas para hacer referencia a una imagen en el directorio image / headers del tema. ¿Cómo se hace esto en PHP?
Esta función devolverá la URL del directorio del tema para que pueda usarla en otras funciones:
get_bloginfo('template_directory');
Alternativamente, esta función hará eco de la URL del directorio del tema en el navegador:
bloginfo('template_directory');
Por lo tanto, un ejemplo de una imagen en la carpeta de temas images/headers
sería:
<img src="<?php bloginfo('template_directory'); ?>/images/headers/image.jpg" />
Lo que dijo @EAMann , con una advertencia. Eric tiene razón sobre el enfoque general y cómo funcionan las funciones bloginfo()
y get_bloginfo()
y sobre cómo pasar el parámetro 'template_directory'
para obtener el valor que necesita para (la mayoría) de los temas.
Sin embargo, hay una advertencia y esa advertencia es más reciente con Temas secundarios . Si está utilizando un tema secundario, entonces 'template_directory'
probablemente no sea lo que desea, a menos que esté tratando de referirse a una imagen que se encuentra en el directorio del tema principal. En lugar de temas infantiles, lo que probablemente quieras es pasar stylesheet_directory
(lo sé, lo sé, los nombres no te dicen lo que son, pero ¡eh, así es como es!) Tomando algo de la respuesta de Eric usando stylesheet_directory
se vería así (acorté el ejemplo para que no se ajustara):
<img src="<?php bloginfo('stylesheet_directory'); ?>/images/header.jpg" />
Para ilustrar el punto, escribí un archivo independiente rápido que puede colocar en la raíz de su sitio web como test.php
y correr para ver qué resultados genera. Primero ejecute con un tema regular como TwentyTen y luego ejecute con un tema secundario:
<?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>';
Si nota cosas, podría notar que hay mucho más de lo que puede pasar a bloginfo()
y get_bloginfo()
; estudia el código y la captura de pantalla de abajo para obtener ideas.
En la captura de pantalla, puede ver que stylesheet_directory
devuelve lo mismo que 'template_directory'
para un tema normal pero un valor diferente, y probablemente el valor que necesita para un tema secundario.
Paramayorclaridadenestacapturadepantalla,
wp30.dev
esundominioquesoloseejecuta enmicomputadoralocal.Esactualmente unainstanciadeWordPress3.0.1y seconfiguraen127.0.0.1
(igualquelocalhost
)enmilaptopylouso paraprobarejemplosad-hoccomoeste. UséVirtualHostX como una conveniencia en Mac OS X para ayudarme a configurar esos dominios privados no enrutables .dev
pero cualquiera puede hacerlo manualmente por editando el archivo de hosts de la computadora y el ? archivo httpd.conf.
Por cierto, en caso de que no esté familiarizado con Temas secundarios , ¿dónde están otras dos respuestas de WordPress que podrían ayudarlo?
La estructura completa del tema se basa en dos opciones: template
(manteniendo el nombre de la carpeta del tema principal) y stylesheet
(manteniendo el nombre de la carpeta del tema secundario). Si no se utiliza un tema secundario, estos son los mismos.
Para tener flexibilidad de filtros, en lugar de acceder directamente a la opción, hay get_template()
y get_stylesheet()
.
Ahora lo único que falta es combinar aquellos con la ubicación de la carpeta de temas. Esto se puede hacer con get_theme_root_uri()
y de nuevo convenientemente envuelto en get_template_directory_uri()
y get_stylesheet_directory_uri()
.
[get_]bloginfo()
con template_directory
o stylesheet_directory
simplemente envuelve esto y hay pocas razones para usarlo como eso. Yo diría que solo es confuso al tener un argumento que dice directorio (comúnmente relacionado con rutas locales), pero que devuelve URL.
Sumario:
get_template_directory_uri()
para referirse a solo o al tema principal get_stylesheet_directory_uri()
para solo o hijo tema uso este
(dirname(get_bloginfo('stylesheet_url')))
Lea otras preguntas en las etiquetas theme-development