web-dev-qa-db-fra.com

PHP les fichiers inclus dans functions.php ne fonctionnent pas

Ceci est mon premier post sur WordPress StackExchange , je vais essayer d'être précis.

Ma question est la suivante: Y a-t-il quelque chose en particulier que je devrais faire pour les fichiers que j'inclus dans le fichier functions.php de mon thème?

Je crée un thème WordPress et mon fichier functions.php devient très gros maintenant. J'ai réussi à supprimer beaucoup de code en transformant certaines fonctions en plugins mais c'est toujours énorme.

Je voudrais pouvoir organiser le code avec includes . J'ai essayé plusieurs choses mais cela n'a pas fonctionné. C'est comme si les fichiers que j'avais inclus dans mon fichier functions.php étaient ignorés.

// Configure the WordPress Customizer
require(get_template_directory_uri() . '/admin/customizer/customizer.php');

Le code ci-dessus est censé appeler un fichier qui ajoute une fonction qui crée des sections, des paramètres et des contrôles dans le personnaliseur WordPress. Lorsque la fonction est placée directement dans mon fichier functions.php , tout fonctionne bien, mais lorsque j'essaie de l'inclure, cela ne fait rien.

Le fichier inclus contient également comprend , je ne sais pas si cela est pertinent.

Le code ci-dessus est accroché sur after_setup_theme , si vous pensez que je devrais faire quelque chose différemment, veuillez me le dire, je veux apprendre.

1
donnie_g

Je divise toujours mon fichier functions.php en fichiers de fonctionnalité plus gérables et spécifiques. Par exemple, toutes les fonctions liées au pied de page sont insérées dans un fichier appelé footer-functions.php et les fonctions de pagination dans un fichier appelé pagination-functions.php. De cette façon, mon code reste organisé, gérable et je ne tue pas mon functions.php. Cependant, cela ne concerne que des fonctions spécifiques à un thème, les fonctions spécifiques à un site vont beaucoup plus dans les plugins avec le même type de méthode

Pour revenir au fait, à la fin, j'inclus tous mes fichiers de fonction spécifiques plus petits dans functions.php avec require_once() comme suit

require_once( 'footer-functions.php' );
require_once( 'pagination-functions.php' );

C'est tout ce dont vous avez besoin. Vous ne devez pas accrocher cela à un crochet ou l'ajouter à une fonction, cela peut avoir un comportement attendu pouvant conduire à un site cassé

2
Pieter Goosen

Votre problème est que vous avez utilisé la fonction get_template_directory_uri() pour votre chemin d’inclusion. Comme indiqué par le nom de la fonction, cela retourne un URI (pas un chemin), ce qui ne sert à rien d'inclure un fichier php dans un autre.

Entrez simplement le chemin relatif du fichier à inclure.

Par exemple. si votre structure est:

/my-theme
 |--functions.php
 |--/lib
     |--customizer.php
     |--tools.php
 |--style.css
 ...etc

Dans votre functions.php simple put

<?php

require_once('lib/customizer.php');
require_once('lib/tools.php');

L’approche est la même si vous utilisez require(), require_once() ou include()

1
harryg

À mon avis, votre fichier de fonctions peut être aussi gros que vous le souhaitez, mais organiser des fonctions en includes est un processus très logique. Je voudrais d’abord vérifier que get_template_directory_uri () renvoie le chemin correct. Vous pouvez également inclure des fichiers sans le chemin complet dans votre thème si/admin/se trouve dans la racine de votre thème: require ('/ admin/customizer/customizer.php');

0
Innate