WordPress : Inclure les fichiers dans le fichier de fonctions du thème enfant
Généralement, dans mon fichier de fonction de thème, j’aurai besoin d’autres fichiers pour que les choses restent propres.
require_once("foo.php");
Travaillant maintenant dans un thème enfant, j’aimerais faire la même chose. J’ajoute des options d’administration personnalisées et il semble impossible d’inclure du code. J’ai fait écho au chemin pour m’assurer que j’appelle le bon fichier et qu’il appelle le bon emplacement, mais rien dans ce fichier ne semble fonctionner. Le code s’exécute correctement s’il est placé dans le fichier de fonctions du thème enfant.
Solution n°1 trouvée
Dans un thème enfant, la bonne manière est
require_once( get_stylesheet_directory() . '/foo.php');
Dans le thème parent, vous pouvez toujours utiliser
require_once ( get_template_directory() . '/foo.php' );
get_template_directory()
fonctionne toujours dans le thème enfant, ciblez malheureusement le répertoire du thème parent. Dans ton cas c’est utile
Solution n°2 trouvée
Les thèmes enfants référencent les thèmes parents par nom de répertoire, et dans une installation normale, tous vos thèmes vivent dans wp-content/themes/
, donc je dirais que c’est bien de référencer ces thèmes par leur chemin relatif :
include '../parent-theme/some-file.php';
Si cela vous met mal à l’aise, j’observe les constantes suivantes dans WordPress 3.0.1 avec un thème enfant de vingt dix ans appelé tt-child :
TEMPLATEPATH /home/adam/public_html/wp3/wp-content/themes/twentyten
STYLESHEETPATH /home/adam/public_html/wp3/wp-content/themes/tt-child
Vous pouvez donc faire ce qui suit dans votre thème enfant pour référencer le répertoire du thème parent :
include TEMPLATEPATH . '/some-file.php';
Solution n°3 trouvée
Vous ne voulez certainement pas coder en dur l’URL. La bonne façon de le faire est
require_once( get_stylesheet_directory(). '/my_included_file.php' );
Voir plus d’informations sur WordPress Codex
Maintenant, si vous modifiez par exemple header.php qui a une inclusion, vous le référencerez comme suit :
require_once( get_stylesheet_directory() . '/../parenthteme/my_included_file.php' );
0 commentaire