La documentation WordPress pour déterminer le plugin et les répertoires de contenu indique que:
WordPress utilise les constantes suivantes pour déterminer le chemin d'accès aux répertoires de contenu et de plug-in. Ceux-ci ne doivent pas être utilisés directement par les plugins ou les thèmes , mais sont répertoriés ici pour être complets.
Il énumère WP_CONTENT_DIR
et WP_PLUGIN_DIR
parmi les constantes que les développeurs de thèmes et de plugins ne devraient pas utiliser, probablement à cause de cela:
WordPress permet aux utilisateurs de placer leur répertoire wp-content où ils veulent, vous ne devez donc jamais supposer que les plugins seront dans wp-content / plugins, ou que les téléchargements seront dans wp-content / uploads, ou que les thèmes seront dans wp- contenu / thèmes.
Mark Jaquith commente également ici que ces constantes ne doivent pas être utilisées:
N'utilisez pas WP_PLUGIN_URL ou WP_PLUGIN_DIR - les plugins peuvent ne pas être dans le répertoire plugins.
Alors, quelle est la façon acceptée de référencer le chemin d'accès complet aux plugins, au contenu wp et aux dossiers de thèmes sans utiliser ces constantes?
Comme exemple simple, pour sortir le chemin complet de tous les plugins installés, je peux le faire:
<?php
$plugins = get_plugins();
foreach ($plugins as $file => $details) {
echo WP_PLUGIN_DIR . '/' . $file . '<br>';
}
Ce qui produit une liste comme ça:
/var/www/wp-content/plugins/akismet/akismet.php
/var/www/wp-content/plugins/debug-bar/debug-bar.php
/var/www/wp-content/plugins/hello.php
(Je pourrais vouloir le faire si j'écrivais un plugin pour permettre à l'utilisateur d'archiver sélectivement des plugins dans le cadre d'une sauvegarde de site, par exemple.)
Si l'utilisation WP_PLUGIN_DIR
est incorrecte, quelle est l'alternative suggérée? Il n'y a pas d'équivalent wp_upload_dir()
pour les plugins, les thèmes et le dossier wp-content que je peux trouver, ce qui rend problématique le référencement des thèmes et des répertoires racine des plugins potentiellement errants.
WP_PLUGIN_DIR
, d'où ma question ici.