web-dev-qa-db-fra.com

Comment créer un lien vers des images de mon plugin, quel que soit le nom du dossier du plugin

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.

2
Scott B

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__);
8
Rarst

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

6
TheDeadMedic

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] /"

0
PNMG

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
0
majick