从插件代码中引用图像的正确方法是什么,以便无论文件夹名称如何,它们都能正确解析?
我遇到了一个问题,一个用户下载了我的插件两次,然后使用第二个下载的文件来安装它。由于Windows自动将重复文件命名为foldername(2)。zip,当我的插件上传到网站时,它被放在一个名为“foldername(2)”的文件夹中。因此,由于我的图像链接到了wp content/plugins/foldername/img/foo.png,因此没有任何图像显示出来。
从插件代码中引用图像的正确方法是什么,以便无论文件夹名称如何,它们都能正确解析?
我遇到了一个问题,一个用户下载了我的插件两次,然后使用第二个下载的文件来安装它。由于Windows自动将重复文件命名为foldername(2)。zip,当我的插件上传到网站时,它被放在一个名为“foldername(2)”的文件夹中。因此,由于我的图像链接到了wp content/plugins/foldername/img/foo.png,因此没有任何图像显示出来。
如前所述,使用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)
site_url($path)
home_url($path)
plugins_url($path, $file)
plugin_basename($file)
要获取目录的绝对URL$file
currentlyresides in和appends$path
plugin_basename($file)
$file
这应该对你有用。
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路径]/[我的插件]/”我认为使用plugin_dir_url 有效解决此问题:
$url = plugin_dir_url(__FILE__);
$imageurl = $url.\'images/wordpress.png\'l