Comment puis-je obtenir l'URL du thème en PHP?

36

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?

    
posée mac9416 21.08.2010 - 02:46
la source

4 réponses

43

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 echo renvoie l'URL du répertoire du thème au navigateur:

bloginfo('template_directory');

Ainsi, un exemple d'image dans le dossier themes images/headers serait:

<img src="<?php bloginfo('template_directory'); ?>/images/headers/image.jpg" />
    
réponse donnée EAMann 21.08.2010 - 05:19
la source
32

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 get_bloginfo() et sur la manière de passer le paramètre 'template_directory' pour obtenir la valeur dont vous avez besoin pour la plupart des thèmes.

Toutefois, il existe une mise en garde et cette mise en garde concerne les nouveaux Thèmes pour les enfants . Si vous utilisez un thème enfant, alors '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 enfants, vous voulez probablement passer stylesheet_directory (je sais, je sais, les noms ne vous disent pas ce qu’ils sont mais bon, c’est comme ça!) Empruntant un peu à la réponse d’Eric en utilisant stylesheet_directory ressemblerait à ceci (j'ai raccourci l'exemple pour qu'il ne soit pas bouclé):

  

<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 sous le nom de test.php et exécuter pour voir ce qu’il génère. Commencez par exécuter un thème régulier tel que TwentyTen, puis utilisez 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 beaucoup plus que 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 constater que stylesheet_directory renvoie la même chose que 'template_directory' pour un thème normal, mais avec une valeur différente et probablement la valeur dont vous avez besoin pour un thème enfant.

  

Pourplusdeclartésurcettecaptured'écran,  wp30.devestundomainequis'exécuteuniquement  surmonordinateurlocal.C'estactuellement  uneinstancedeWordPress3.0.1et  estconfiguréà127.0.0.1(identiqueà  localhost)surmonordinateurportableetjel'utilise  pourtesterdesexemplesad-hoccommecelui-ci.  J'aiutilisé VirtualHostX pour me faciliter la tâche sur Mac OS X afin de m'aider à configurer ces domaines .dev privés non routables, mais tout le monde peut le faire. manuellement par   l'édition du fichier hôtes de l'ordinateur et la   ? fichier httpd.conf.

Soit dit en passant, si vous n'êtes pas familier avec les Thèmes pour enfants , où se trouvent deux autres réponses WordPress susceptibles de vous aider:

réponse donnée MikeSchinkel 21.08.2010 - 12:50
la source
11

L'ensemble de la structure de thème repose sur deux options: template (contenant le nom du dossier de thème parent) et stylesheet (contenant le nom de dossier de thème enfant). Si aucun thème enfant n’est utilisé, ils sont identiques.

Pour plus de flexibilité dans les filtres plutôt que dans l'option d'accès direct, il existe donc get_template() et get_stylesheet() .

Il ne manque plus que de les combiner avec l’emplacement du dossier de thèmes. Cela peut être fait à l'aide de get_theme_root_uri() et à nouveau encapsulé dans get_template_directory_uri() et get_stylesheet_directory_uri() .

[get_]bloginfo() avec template_directory ou stylesheet_directory des arguments les enveloppent simplement et il y a peu de raisons de les utiliser comme ça. Je dirais que c'est déroutant seulement d'avoir l'argument qui dit répertoire (concerne généralement les chemins locaux), mais renvoie les URL.

Résumé:

  • utilisez get_template_directory_uri() pour faire référence à uniquement ou au parent thème
  • utilisez get_stylesheet_directory_uri() pour seulement ou un enfant thème
réponse donnée Rarst 26.03.2012 - 21:59
la source
-1

je l'utilise (dirname(get_bloginfo('stylesheet_url')))

    
réponse donnée fja3omega 26.03.2012 - 21:31
la source

Lire d'autres questions sur les étiquettes