web-dev-qa-db-fra.com

Chargement automatique dans le thème des enfants

J'essaie de charger automatiquement le fichier vendor/autoload.php de mon thème parent dans mon thème enfant.

voici ce que j'ai essayé mais en vain:

function beast_theme_setup() {
  $var1 = get_theme_root_uri() . '/beast/vendor/autoload.php';
  $var2 = get_theme_root_uri() . '/beast/functions.php';
  $var = locate_template( array( $var1, $var2), true, false );
  var_dump($var);
}

add_action( 'after_setup_theme', 'beast_theme_setup', 11 );

et

include get_theme_root_uri() . '/beast/vendor/autoload.php';

Toute aide à ce sujet serait incroyable.

Merci Jake.

5
Henshall

Donc, il y a une ou deux choses à garder à l'esprit:

  • Il ne devrait y avoir qu'un seul dossier de fournisseur
  • Il devrait y avoir un composeur principal.json qui se trouve dans la racine de votre projet, qui extrairait toutes les dépendances.
  • Vous recherchez et chargez toujours l'autochargeur dans le répertoire actuel. Il n'y a aucune garantie qu'il existe ou non, car vous pouvez être une dépendance ou non.

Mais surtout, il y a plus d'informations sur les thèmes WP que vous devez connaître et qui simplifient votre tâche:

Tout d'abord, get_theme_root n'est pas nécessaire, vous pouvez utiliser get_template_directory() à la place, et cela vous donnera le répertoire du thème parent, évitant ainsi de coder en dur le nom du thème parent.

Cela devrait simplifier votre code à ceci:

if ( file_exists( get_template_directory() . '/vendor/autoload.php' ) ) {
    require get_template_directory() . '/vendor/autoload.php';
}

Mais même cela n'est pas nécessaire, ce qui nous amène à la deuxième information:

Dans WordPress, le thème enfant functions.php est chargé, puis le thème parent functions.php immédiatement après.

Il vous suffit donc de vous assurer que le thème parent charge l'autoloader et que tout votre code est exécuté comme il se doit (à l'exception de l'autoloader lui-même). De cette façon, vous n'avez pas du tout besoin de charger l'autoloader des thèmes parents, il le fera tout seul.

7
Tom J Nowell