Je dois obtenir l'URL de mon répertoire de thèmes pour référencer une image dans le répertoire images / en-têtes du thème. Comment cela se fait-il en PHP?
Je dois obtenir l'URL de mon répertoire de thèmes pour référencer une image dans le répertoire images / en-têtes du thème. Comment cela se fait-il en PHP?
Réponses:
Cette fonction renverra l'URL du répertoire du thème afin que vous puissiez l'utiliser dans d'autres fonctions:
get_bloginfo('template_directory');
Sinon, cette fonction fera écho à l'URL du répertoire du thème du navigateur:
bloginfo('template_directory');
Ainsi, un exemple d'image dans le images/headers
dossier themes serait:
<img src="<?php bloginfo('template_directory'); ?>/images/headers/image.jpg" />
get_template_directory_uri()
Ce que @EAMann a dit, avec une mise en garde. Eric a raison sur l'approche générale et sur le fonctionnement des fonctions bloginfo()
et du get_bloginfo()
travail, ainsi que sur la manière de transmettre le paramètre 'template_directory'
pour obtenir la valeur dont vous avez besoin pour la plupart des thèmes.
Cependant, il y a une mise en garde et cette mise en garde est avec les nouveaux thèmes de l'enfant . Si vous utilisez un thème enfant, ce 'template_directory'
n’est probablement pas ce que vous voulez, sauf si vous essayez de vous référer à une image qui se trouve dans le répertoire du thème parent. Au lieu de cela pour les thèmes de l' enfant ce que vous voulez sans doute est de passer stylesheet_directory
(je sais, je sais, les noms ne vous disent pas ce qu'ils sont mais bon, c'est juste la façon dont il est!) Empruntant un peu de la réponse d'Eric à l' aide stylesheet_directory
ressemblerait à ceci ( J'ai raccourci l'exemple pour ne pas envelopper):
<img src="<?php bloginfo('stylesheet_directory'); ?>/images/header.jpg" />
Pour illustrer ce point, j’ai écrit un fichier autonome rapide que vous pouvez déposer à la racine de votre site Web au fur test.php
et à mesure de l’exécution et voir ce qu’il génère. D'abord exécuté avec un thème régulier comme TwentyTen, puis avec un thème enfant:
<?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 vous remarquez des choses, vous remarquerez peut-être qu'il y a beaucoup plus à ce que vous pouvez transmettre bloginfo()
et get_bloginfo()
; étudiez le code et la capture d'écran ci-dessous pour des idées.
En regardant la capture d'écran, vous pouvez voir que stylesheet_directory
revient la même chose que 'template_directory'
pour un thème standard est renvoyée, mais une valeur différente et probablement celle dont vous avez besoin pour un thème enfant.
(la source: mikeschinkel.com )
Pour plus de clarté sur cette capture d'écran,
wp30.dev
est un domaine qui s'exécute uniquement sur mon ordinateur local. C'est actuellement une instance de WordPress 3.0.1 et il est configuré à127.0.0.1
(même quelocalhost
) sur mon ordinateur portable et je l'utilise pour tester des exemples ad-hoc comme celui-ci. j'ai utilisé VirtualHostX à titre de commodité sous Mac OS X pour m'aider à configurer ces.dev
domaines privés non routables , mais tout le monde peut le faire manuellement en modifiant le fichier hosts de l'ordinateur et le fichier? fichier httpd.conf.
À propos, au cas où vous ne connaissez pas thèmes pour enfants, deux autres réponses WordPress pourraient vous aider:
get_stylesheet_directory_uri()
. Devrais-je utiliser plain ol ' get_stylesheet_directory()
?
Toute la structure du thème repose sur deux options: template
(en conservant le nom du dossier de thème parent) et en stylesheet
(le nom de dossier du thème enfant). S'il n'y a pas de thème enfant utilisé, ce sont les mêmes.
Pour avoir la flexibilité des filtres, plutôt que l'option d'accès direct, il existe en conséquence get_template()
et get_stylesheet()
.
Il ne reste plus maintenant qu’à combiner ceux-ci avec l’emplacement du dossier de thèmes. Cela peut être fait avec get_theme_root_uri()
et à nouveau bien emballé get_template_directory_uri()
et get_stylesheet_directory_uri()
.
[get_]bloginfo()
avec template_directory
ou des stylesheet_directory
arguments ne fait que les envelopper et il y a peu de raisons de l’utiliser comme ça. Je dirais qu'il est seulement déroutant d'avoir l'argument disant directory (concerne généralement les chemins locaux), mais de retourner les URL.
Résumé:
get_template_directory_uri()
pour désigner seul thème ou un thème parentget_stylesheet_directory_uri()
à seulement ou enfant thème