Necesito obtener la URL de mi directorio de temas para hacer referencia a una imagen en el directorio de imágenes / encabezados 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 de imágenes / encabezados del tema. ¿Cómo se hace esto en PHP?
Respuestas:
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');
Entonces, un ejemplo para una imagen en la images/headers
carpeta de temas sería:
<img src="<?php bloginfo('template_directory'); ?>/images/headers/image.jpg" />
get_template_directory_uri()
Lo que dijo @EAMann , con una advertencia. Eric tiene razón sobre el enfoque general y sobre cómo funcionan bloginfo()
y funcionan las funciones y get_bloginfo()
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 con los nuevos temas infantiles . Si está utilizando un tema secundario, 'template_directory'
probablemente no sea lo que desea a menos que realmente esté tratando de hacer referencia a una imagen que está en el directorio del tema principal. En cambio para los temas niño lo que es probable que desee es pasar stylesheet_directory
(ya sé, ya sé, los nombres no le dicen lo que son, pero bueno, eso es sólo la forma en que lo es!) Tomando prestado un poco de la respuesta de Eric usando stylesheet_directory
sería el siguiente ( 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 test.php
y ejecutar para ver qué produce. 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 notas cosas, puedes notar que hay mucho más a lo que puedes pasar bloginfo()
y get_bloginfo()
; estudie el código y la captura de pantalla a continuación para obtener ideas.
Mirando la captura de pantalla, puede ver que stylesheet_directory
devuelve lo mismo que 'template_directory'
para un tema normal pero con un valor diferente, y probablemente el valor que necesita para un tema secundario.
(fuente: mikeschinkel.com )
Para mayor claridad en esta captura de pantalla,
wp30.dev
es un dominio que se ejecuta solo en mi computadora local. Actualmente es una instancia de WordPress 3.0.1 y está configurado en127.0.0.1
(igual quelocalhost
) en mi computadora portátil y lo uso para probar ejemplos ad-hoc como este. Utilicé VirtualHostX como una conveniencia en Mac OS X para ayudarme a configurar esos.dev
dominios privados no enrutables , pero cualquiera puede hacerlo manualmente editando el archivo host de la computadora y el? archivo httpd.conf.
Por cierto, en caso de que no esté familiarizado con Child Themes, ¿ dónde hay otras dos respuestas de WordPress que podrían ayudar?
get_stylesheet_directory_uri()
. ¿Debo estar usando ol 'simple get_stylesheet_directory()
?
Toda la estructura del tema se basa en dos opciones: template
(mantener la carpeta del tema principal namre) y stylesheet
(mantener la carpeta del tema secundario namr). Si no se utiliza un tema secundario, estos son los mismos.
Para tener flexibilidad de los filtros, en lugar de tener acceso a la opción directamente, hay en consecuencia get_template()
y get_stylesheet()
.
Ahora lo único que falta es combinarlos con la ubicación de la carpeta de temas. Esto se puede hacer con get_theme_root_uri()
y nuevamente convenientemente envuelto en get_template_directory_uri()
y get_stylesheet_directory_uri()
.
[get_]bloginfo()
con template_directory
o stylesheet_directory
argumentos simplemente los envuelve y hay pocas razones para usarlo así. Diría que solo es confuso tener argumentos que dicen directorio (comúnmente se relaciona con rutas locales), pero devuelve URL.
Resumen:
get_template_directory_uri()
para referirse solo o tema principalget_stylesheet_directory_uri()
a única o un niño tema