Quelle est la bonne méthode pour faire référence aux images de votre code de plug-in, de sorte que, quel que soit le nom du dossier, elles soient résolues correctement?
J'ai eu un problème où un utilisateur a téléchargé mon plugin deux fois, puis a utilisé le deuxième fichier téléchargé pour l'installer. Étant donné que Windows nommait automatiquement les doublons de fichiers foldername (2) .Zip, lorsque mon plug-in a été chargé sur le site, il a été placé dans un dossier nommé "NomPold (2). Ainsi, mes images étaient liées à wp-content/plugins/NomPosition /. img/foo.png, aucune des images n'apparaissait.
Je ne suis pas sûr de cet exemple spécifique, mais en général, plugins_url()
convient à cette fonction.
Exemple du Codex:
plugins_url('/images/wordpress.png', __FILE__);
Comme cela a déjà été dit, utilisez plugins_url($path, $plugin_file)
.
Vous devezalwayséviter autant que possible les chemins de codage en dur, puisqu'un utilisateur ne peut pas renommer un dossier de plug-ins, il peut aussi déplacer le répertoire wp-content
complet !
Voici quelques fonctions et constantes que j'utilise toujours;
WP_CONTENT_DIR
Chemin de fichier absolu vers le répertoire wp-content
WP_PLUGIN_DIR
Chemin de fichier absolu vers le répertoire wp-content/plugins
wp_upload_dir($time)
Récupère les chemins des systèmes de fichiers et des URL vers le répertoire de téléchargement, éventuellement pour une heure spécifique (si vous utilisez des dossiers année/mois)
site_url($path)
URL absolue pour l'installation de WordPress
home_url($path)
URL absolue de la page d'accueil WordPress (page de garde en soi)
plugins_url($path, $file)
Utilise plugin_basename($file)
pour obtenir l'URL absolue du répertoire dans lequel $file
réside actuellement et l'ajoute $path
.
plugin_basename($file)
Récupère le chemin relatif depuis le dossier plugins vers $file
Cela devrait fonctionner pour vous.
http://codex.wordpress.org/Function_Reference/plugin_basename
De l'exemple:
Si votre fichier de plug-in se trouve dans /home/www/wp-content/plugins/myplugin/myplugin.php et que vous appelez le numéro suivant:
$x = plugin_basename(__FILE__);
$ x sera égal à "myplugin/myplugin.php".
Si vous souhaitez connaître le chemin complet de l'URL du répertoire de votre plugin, vous pouvez appeler:
$x = WP_PLUGIN_URL.'/'.str_replace(basename( __FILE__),"",plugin_basename(__FILE__));
$ x sera égal à "http: // [url-chemin-aux-plugins]/[myplugin] /"
Je pense que l’utilisation de plugin_dir_url résout ce problème efficacement:
$url = plugin_dir_url(__FILE__);
$imageurl = $url.'images/wordpress.png'l