如何从WordPress插件子目录文件获取插件根目录/URL?
获取WordPress插件根目录(不含子目录)的方法
方法一:在主插件文件中定义全局常量(推荐)
在插件的主文件(比如file-converter.php)中添加以下代码,一次性定义插件根目录的路径和URL,后续所有子目录文件都能直接调用这些常量,无需再处理路径:
// 定义插件根目录的绝对路径 define('FILE_CONVERTER_DIR', plugin_dir_path(__FILE__)); // 定义插件根目录的URL define('FILE_CONVERTER_URL', plugin_dir_url(__FILE__));
之后在includes子目录的文件里,直接使用FILE_CONVERTER_DIR就能得到/xxx/wp-content/plugins/file-converter/,FILE_CONVERTER_URL对应根目录的URL。
方法二:动态提取插件根目录(无需修改主文件)
如果无法修改主插件文件,可以通过plugin_basename函数结合WordPress内置常量来动态获取:
获取根目录路径
// 获取当前文件所属插件的basename(格式:插件文件夹/当前文件路径) $plugin_basename = plugin_basename(__FILE__); // 提取插件文件夹名称 $plugin_folder_name = dirname($plugin_basename); // 拼接得到插件根目录的绝对路径 $plugin_root_path = WP_PLUGIN_DIR . '/' . $plugin_folder_name . '/';
获取根目录URL
// 拼接得到插件根目录的URL $plugin_root_url = plugins_url('/' . $plugin_folder_name) . '/';
方法三:字符串替换(不推荐)
如果明确知道当前文件所在的子目录名称(比如includes),可以用字符串替换的方式去掉子目录部分,但这种方法灵活性差,子目录结构变动后会失效:
$current_sub_dir_path = plugin_dir_path(__FILE__); // 替换掉子目录部分,得到根目录 $plugin_root_path = str_replace('/includes/', '/', $current_sub_dir_path);
内容的提问来源于stack exchange,提问作者alancc
相关产品推荐
相关产品推荐

