WordPress : Inclure automatiquement tous les fichiers php dans un répertoire de thème enfant

Publié par Jean-Michel le

J’utilise actuellement un thème enfant personnalisé sur plusieurs sites et j’aimerais modulariser des fonctionnalités personnalisées particulières (par exemple, le commerce électronique) en les séparant dans des fichiers php individuels et en incluant les éléments pertinents selon les besoins (sans les transformer en plugins), sinon il est difficile de suivre les personnalisations de chaque fichier à travers plusieurs variantes du thème enfant.

Pour ce faire, j’aimerais pouvoir copier des fichiers php particuliers dans un dossier du thème enfant, et que ceux-ci soient automatiquement inclus. Comment pourrais-je y parvenir ?J’ai essayé plusieurs solutions, mais elles ne semblent pas fonctionner dans ce contexte. Voici un exemple de code que j’ai utilisé :

function include_all_php($folder){
 foreach (glob("{$folder}/*.php") as $filename)
 {
    include $filename;
 }
}
include_all_php("includes"); // "includes" is the name of the folder in the child theme

Solution n°1 trouvée

Je soupçonne qu’il a globbesoin du répertoire de travail actuel pour fonctionner, vous pouvez donc essayer de transmettre le chemin complet du fichier à la fonction existante que vous avez …

include_all_php(dirname(__FILE__).'/includes');

Ou définissez d’abord le répertoire de travail actuel :

setcwd(dirname(__FILE__).'/');
include_all_php('includes');

Alternativement, vous pouvez également utiliser scandir:

$filepath = dirname(__FILE__).'/includes/';
$files = scandir($filepath);
foreach ($files as $file) {
    // match the file extension to .php
    if (substr($file,-4,4) == '.php') {include($filepath.$file);}
}

Catégories : Wordpress

Jean-Michel

Jean-Michel est en charge de la partie blog du site. Il met en place la stratégie de contenu et répond aux questions fréquentes sur Wordpress.

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *