Généralement, dans mon fichier de fonction de thème, il me faut d’autres fichiers pour que les choses restent ordonnées.
require_once("foo.php");
Maintenant, travaillant dans un thème pour enfants, 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 repris le 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 fonctionne correctement s'il est placé dans le fichier de fonctions du thème enfant.
Les thèmes enfants référencent les thèmes parents par nom de répertoire et, lors d'une installation normale, tous vos thèmes résident dans wp-content/themes/
.
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 vingt ans enfant 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 effectuer les opérations suivantes dans votre thème enfant pour référencer le répertoire de thème parent:
include TEMPLATEPATH . '/some-file.php';
Dans un thème enfant, la bonne façon 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 et cible malheureusement le répertoire du thème parent. Dans votre cas c'est utile
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'infos sur Wordpress Codex
Maintenant, si votre exemple en modifiant header.php qui a un include, vous le référeriez comme suit:
require_once( get_stylesheet_directory() . '/../parenthteme/my_included_file.php' );
Utilisez <?php get_template_part( 'name-the-page-here' ); ?>
. Sans l'extension .php
Bonjour @curtismchale :
Je ne sais pas si c'est le cas ou pas, mais vous devez inclure des guillemets autour de foo.php
, comme suit:
require_once('foo.php');
Cela résout-il votre problème?
Je pense que c'est le meilleur moyen d'obtenir le chemin de thème de votre enfant
<?php $get_my_path = dirname( get_bloginfo('stylesheet_url') ); ?>
<?php require_once( $get_my_path. '/my_included_file.php' ); ?>
Obtenir une idée de http://dynamicweblab.com/2013/02/get-template-path-in-wordpress-child-themes/
Il est tout à fait possible et normal de faire inclut dans functions.php
.
Je le fais comme ceci dans mon thème enfant (php
est un sous-répertoire pour le code):
include 'php/core.php';
Si vous rencontrez des problèmes sans raison apparente, essayez d'activer le mode débogage dans wp-config.php
:
define('WP_DEBUG', true);
Il se peut que des erreurs pertinentes se produisent, mais ne s'affichent pas.