web-dev-qa-db-fra.com

La bonne façon d'inclure/d'exiger PHP fichiers dans WordPress

Je suis un nouveau développeur WordPress et j'ai récemment eu des problèmes (sur plusieurs sites) avec include_once et require_once pour les fichiers PHP. Si j'inclus (get_theme_directory_uri() . 'subdir/file'), le fichier spécifié est inclus (ou requis, ce qui entraîne des erreurs fatales), mais si des fonctions WordPress sont appelées dans le fichier, j'obtiens un résultat similaire à:

' Appel de la fonction non définie add_action() dans/full/path/to/file'.

La solution apparente que j'ai trouvée est de faire:

include(dirname(__FILE__) . "/subdir/filename");

Est-ce vrai ou ai-je manqué le "moyen WordPress" d'inclure des fichiers quelque part?

2
caffeine

Si vous vérifiez https://codex.wordpress.org/Function_Reference/get_template_directory_uri

Vous verrez que get_template_directory_uri() renvoie un URI et non un chemin de serveur.

Vous devriez utiliser à la place la fonction get_template_directory():

include get_template_directory() . 'subdir/filename.php';

Pour un plugin, vous pouvez utiliser la fonction plugin_dir_path():

include plugin_dir_path( __FILE__ ) . 'subdir/filename.php';
8
thomascharbit