web-dev-qa-db-fra.com

Inclure les fichiers dans le fichier de fonctions du thème enfant

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.

8
curtismchale

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';
12
Annika Backstrom

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

10
Christian

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' );
2
Marlyse Comte

Utilisez <?php get_template_part( 'name-the-page-here' ); ?>. Sans l'extension .php

2
Everaldo Matias

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?

2
MikeSchinkel

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/

0
Maidul

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.

0
Rarst