我正在尝试从插件1(wp作业管理器)添加一个函数到插件2(woocommerce)。
我决定通过从插件1中包含php文件来做到这一点,但是我无法找到文件目录。我用过:
include( plugin_dir_path( __FILE__ ) . 'wp-job-manager/includes/class-wp-job-manager-applications.php');
但它返回以下错误:
警告: include(/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行
请告诉我,因为我长期坚持这个问题......谢谢!
答案 0 :(得分:2)
Wordpress设置有一个常量ABSPATH
定义(查看wp_config.php
的底行),它指向Wordpress设置的完整和绝对路径,所以在你的情况下echo ABSPATH;
会返回/home/content/p3pnexwpnas05_data02/78/2394078/html/
。
对于大多数安装,将wp-content/plugins/
附加到该字符串会指向您的插件目录。
但是,在Wordpress配置中,还可以根据自己的喜好自定义wp-content和/或plugins目录,因此不建议在ABSPATH.'wp-content/plugins/
上构建插件。不幸的是,Wordpress根本没有get_absolute_pluginspath()
功能或可用的东西。一个技巧是获取plugins-URL,并从中删除site-URL,因此剩下的数据是wp-content / plugins /(或者用户使用它的任何内容)。在代码中:
$plugins_directory = ABSPATH.str_replace(site_url()."/","",plugins_url())."/";
在您的情况下会返回:
/home/content/p3pnexwpnas05_data02/78/2394078/html/wp-content/plugins/
答案 1 :(得分:0)
你可能意味着:
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__)
给出文件所在目录的路径(插件目录)。
如果您在其他文件中使用它,则需要相应地调整路径字符串的其余部分。