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

Publié par Jean-Michel le

Je suis un nouveau développeur WordPress et j’ai récemment eu des problèmes (sur plusieurs sites) avec include_onceet require_oncepour 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 ‘fichier’, j’obtiens quelque chose de similaire à :

Appel à une fonction indé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 exact ou ai-je raté « la méthode WordPress » pour inclure des fichiers quelque part ?

Solution n°1 trouvée

WordPress 4.7+ introduit les fonctions get_theme_file_path() pour inclure le fichier sur le thème WordPress.

Inclure comme ceci :

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

L’avantage d’utiliser cette fonction est que sur le thème enfant, vous pouvez remplacer le fichier de thème parent.

Référence : https://developer.wordpress.org/reference/functions/get_theme_file_path/

Solution n°2 trouvée

Si vous cochez https://codex.wordpress.org/Function_Reference/get_template_directory_uri

Vous verrez get_template_directory_uri()renvoie un uri, pas un chemin de serveur.

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

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

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

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

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 *