如何找到WordPress插件目录?

4

我正在尝试将插件1(wp职位管理器)的功能添加到插件2(woocommerce)中。

我决定通过包含来自插件1的php文件来实现此目的,然而我无法找到该文件目录。我已经使用了:

 include( plugin_dir_path( __FILE__ ) . 'wp-job-manager/includes/class-wp-job-manager-applications.php');

但是返回以下错误:

警告:包含(/home/content/p3pnexwpnas05_data02/78/2394078/html/wp-content/themes/listify-child/wp-job-manager/includes/class-wp-job-manager-applications.php)失败,无法打开流: 在/home/content/p3pnexwpnas05_data02/78/2394078/html/wp-content/themes/listify-child/functions.php第77行

请给予建议,因为我已经卡在这个问题上很久了... 谢谢!!!


首先,你应该问问自己为什么要修改这些插件?我不知道你在做什么,但你可能只需要同时激活它们并构建第三个插件来桥接两者。如果你直接修改任何一个插件,那么在更新时就会丢失你的更改。 - helgatheviking
2个回答

2

WordPress的安装中已经定义了一个常量ABSPATH(查看wp_config.php底部的代码),它指向WordPress安装的完整绝对路径,因此在您的情况下,echo ABSPATH;会返回/home/content/p3pnexwpnas05_data02/78/2394078/html/

对于大多数安装来说,在该字符串后添加wp-content/plugins/就可以指向您的插件目录。

然而,在WordPress配置中,用户还可以自定义wp-content和/或插件目录,因此不建议在ABSPATH.'wp-content/plugins/上构建插件。不幸的是,WordPress没有get_absolute_pluginspath()函数或其他可用函数。一个技巧是获取插件URL并从站点URL中删除它,这样剩余的数据就是wp-content/plugins/(或者用户自己定义的任何内容)。示例代码如下:

$plugins_directory = ABSPATH.str_replace(site_url()."/","",plugins_url())."/";

在您的情况下,它将返回:/home/content/p3pnexwpnas05_data02/78/2394078/html/wp-content/plugins/

1

您可能意思是:


plugin_dir_path(__FILE__)

这将为您提供包含该语句的文件的目录路径。因此,它返回的内容取决于您运行它的位置。如果您使用此语句:

include( plugin_dir_path(__FILE__) . 'wp-job-manager/includes/class-wp-job-manager-applications.php');

在wp_job_manager的主插件文件中(可能是wp_job_manager.php),plugin_dir_path(__FILE__)会给出该文件所在目录(即插件目录)的路径。
如果您在其他文件中使用它,则需要相应地调整其余路径字符串。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接