Comment obtenir l'URL du thème en PHP?
4 réponses
- votes
-
- 2010-08-21
Cettefonction renvoie l'URL du répertoire duthème afin que vouspuissiez l'utiliser dans d'autresfonctions:
get_bloginfo('template_directory');
Alternativement,cettefonction fera écho l'URL du répertoire duthème aunavigateur:
bloginfo('template_directory');
Ainsi,unexemple d'image dans le dossierthèmes
images/headers
serait:<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" />
-
REMARQUE: cela vous donnera le chemin vers lethème *parent * si vous utilisez actuellement unthèmeenfant,et non lethèmeenfant actif.Une réponseplus longue ci-dessousexplique celaplusen détail.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
-
Vouspouvez simplement utiliser `get_template_directory_uri ()`You can simply use `get_template_directory_uri()`
- 2
- 2018-06-20
- Pei
-
- 2010-08-21
Ce que @EAMann a dit,avec unemiseen garde. Eric a raison sur l'approchegénéraleet lefonctionnement desfonctions
bloginfo ()
etget_bloginfo ()
et sur lafaçon depasser leparamètre'template_directory'
pour obtenir la valeur dont vous avezbesoinpour (laplupart) desthèmes.Cependant,il y a unemiseen gardeet cette miseen garde concerne lesnouveaux thèmesenfants . Si vous utilisez unthèmeenfant,
'template_directory'
n'estprobablementpas ce que vous voulez àmoins que vousn'essayiez réellement defaire référence à uneimage qui setrouve dans le répertoire duthèmeparent. Au lieu de celapour lesthèmesenfants,ce que vous voulezprobablement,c'estpasserstylesheet_directory
(je sais,je sais,lesnomsne vous disentpas ce qu'ils sontmaisbon,c'est comme ça!) Emprunter unpeu de La réponse d'Eric utilisantstylesheet_directory
ressemblerait à ceci (j'ai raccourci l'exemplepour qu'ilne s'enroulepas):& lt;img src="& lt;?phpbloginfo ('stylesheet_directory');? >/images/header.jpg"/>
Pourillustrer lepoint quej'ai écrit unfichier autonome rapide,vouspouvez déposer dans la racine de votre site Web sous lenom
test.php
et exécuterpour voir ce qu'ilproduit. Exécutez d'abord avec unthème régulier comme TwentyTen,puisexécutez avec unthèmeenfant:& lt;?php /* *test.php - Testez la différenceentre lesthèmes régulierset enfants * */ inclure "wp-load.php"; $bloginfo_params=tableau ( 'admin_email', 'atom_url', 'charset', 'comments_atom_url', 'comments_rss2_url', 'la description', 'domicile', 'html_type', 'Langue', 'Nom', 'pingback_url', "rdf_url", 'rss2_url', 'rss_url', 'URL du site', 'stylesheet_directory', 'stylesheet_url', 'template_directory', 'template_url', 'text_direction', 'url', 'version', «wpurl», ); echo '& lt;bordure detable="1" >'; foreach ($bloginfo_params comme $param) { $info=get_bloginfo ($param); echo "& lt;tr > & lt;th > {$param}: & lt;/th > & lt;td > {$info} & lt;/td > & lt;/tr >"; } echo '& lt;/table >';
Si vous remarquez des choses,vous remarquerezpeut-être qu'il y abeaucoupplus àtransmettre à
bloginfo ()
etget_bloginfo ()
; étudiez le codeet la capture d'écran ci-dessouspour desidées.En regardant la capture d'écran,vouspouvez voir que
stylesheet_directory
renvoie lamême chose que'template_directory'
pour unthèmenormalmais une valeur différente,et probablement la valeur dont vous avezbesoinpour unthèmeenfant.
(source: mikeschinkel.com )Pourplus de clarté sur cette capture d'écran,
wp30.dev
est un domaine qui s'exécute uniquement surmon ordinateur local. C'est actuellement uneinstance de WordPress 3.0.1et il est configuré sur127.0.0.1
(identique àlocalhost
) surmon ordinateurportableet je l'utilise pourtester desexemples ad hoc comme celui-ci. J'ai utilisé VirtualHostX comme commodité sur Mac OS Xpourm'aider à configurer ces.dev maisn'importe quipeut lefairemanuellementen modifier lefichier d'hôtes de l'ordinateuret le ? Fichier httpd.conf. Au cas où vousne seriezpasfamilier avec les thèmesenfants ,où sont deux autres réponses WordPress quipourraient vous aider:
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:
-
Wow,bonne réponse.J'étaisparesseux avec lethème sur lequelje travaillemaintenantet jen'aipas configuré dethèmeenfant,mais ce seratrès utile à l'avenir.Félicitationspour ce script également.Bien codé.Merci!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
-
Salut,belle réponse!J'utilisegénéralement `get_stylesheet_directory_uri ()`.Dois-je utiliser un 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
Toute la structure duthème repose sur deux options -
template
(contenant lenom du dossier duthèmeparent)etfeuille de style
(contenant lenom du dossier duthèmeenfant). S'iln'y apas dethèmeenfant utilisé,ce sont lesmêmes.Pour avoir laflexibilité desfiltres,plutôt que d'accéder directement aux options,ilexisteen conséquence
get_template ()
etget_stylesheet ()
.Maintenant,la seule chose quimanqueest de les combiner avec l'emplacement du dossier desthèmes. Celapeut êtrefait avec
get_theme_root_uri ()
et encore unefois commodémentenveloppé dansget_template_directory_uri ()
et < code>get_stylesheet_directory_uri () .[get_]bloginfo ()
avectemplate_directory
ou Les arguments destylesheet_directory
lesencapsulent simplementet il y apeu de raisons de les utiliser comme ça. Je dirais que c'est déroutant seulementen ayant l'argument disant répertoire (se rapportegénéralement aux chemins locaux),mais renvoyant des URL.Résumé:
- utilisez
get_template_directory_uri ()
pourfaire référence authème seul ouparent - utilisez
get_stylesheet_directory_uri ()
pour thème uniquement ouenfant
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
-
-
Aucuneexplicationpourquoi c'estmieux que les autres solutions?No explanation why this is better than the other solutions?
- 1
- 2012-11-05
- fuxia
-
J'aibesoin d'obtenir l'URL demon répertoire dethèmespour référencer uneimage dans le répertoireimage/headers duthème.Comment cela sefait-ilen PHP?