如何链接到我的插件中的图像,而不考虑插件文件夹的名称

时间:2010-12-10 作者:Scott B

从插件代码中引用图像的正确方法是什么,以便无论文件夹名称如何,它们都能正确解析?

我遇到了一个问题,一个用户下载了我的插件两次,然后使用第二个下载的文件来安装它。由于Windows自动将重复文件命名为foldername(2)。zip,当我的插件上传到网站时,它被放在一个名为“foldername(2)”的文件夹中。因此,由于我的图像链接到了wp content/plugins/foldername/img/foo.png,因此没有任何图像显示出来。

4 个回复
最合适的回答,由SO网友:Rarst 整理而成

我不确定这个具体的例子,但总的来说plugins_url() 是用于此的拟合函数。

抄本示例:

plugins_url(\'/images/wordpress.png\', __FILE__);

SO网友:TheDeadMedic

如前所述,使用plugins_url($path, $plugin_file).

你应该always 尽可能避免硬编码路径,因为用户不仅可以重命名插件文件夹,还可以move the entire wp-content directory!

这里有一些我经常使用的函数和常量;

  • WP_CONTENT_DIR
    绝对文件路径wp-content 目录

  • WP_PLUGIN_DIR
    绝对文件路径wp-content/plugins 目录

  • wp_upload_dir($time)
    获取上传目录的文件系统和URL路径,可以选择特定时间(如果使用年/月文件夹)

  • site_url($path)
    WordPress安装的绝对URL

  • home_url($path)
    WordPress主页的绝对URL(首页本身)

  • plugins_url($path, $file)
    使用plugin_basename($file) 要获取目录的绝对URL$file currentlyresides in和appends$path

  • plugin_basename($file)
    从plugins文件夹获取相对路径$file

SO网友:PNMG

这应该对你有用。

http://codex.wordpress.org/Function_Reference/plugin_basename

从示例中可以看出:

如果您的插件文件位于/home/www/wp-content/plugins/myplugin/myplugin。php,然后调用:

$x = plugin_basename(__FILE__); 
$x等于“myplugin/myplugin.php”。

如果您想知道插件目录的完整url路径,可以调用:

$x = WP_PLUGIN_URL.\'/\'.str_replace(basename( __FILE__),"",plugin_basename(__FILE__));
$x将等于“http://[插件的url路径]/[我的插件]/”

SO网友:majick

我认为使用plugin_dir_url 有效解决此问题:

$url = plugin_dir_url(__FILE__);

$imageurl = $url.\'images/wordpress.png\'l

结束

相关推荐