我正在编写一个插件,在主插件文件的顶部,我有一系列require_once
典型的陈述。
在花了十多个小时试图找出WP找不到我的课程的原因后,我终于找到了这个——如果我有:
require_once( \'includes/myclassfile.php\' );
它失败了。但如果我显式地在基本路径中这样放置:
define ( \'MY_DIR\', rtrim( plugin_dir_path( __FILE__ ), \'/\' ) );
require_once( MY_DIR . \'/includes/myclassfile.php\' );
它成功了。
所以我的问题是:为什么第一张表格不起作用?我的IDE(PhpStorm)理解它,我开始使用它的模板,我安装了其他使用该表单的插件,它们都可以工作。这个案子有什么不同?
编辑:这个问题被标记为另一个问题的重复,这也解决了关于正确使用require
, 然而,在这种情况下,最终的结论与对我有效的恰恰相反。我不是问该怎么办,而是问为什么一个版本会失败。Isaac的回答说明了一个原因,但它并不令人满意,因为我的wordpress安装中还有其他顶级插件,它们与我的表单不兼容——我想知道是什么让我的表单与众不同。
(为了完整起见,这里是完整的插件文件:)
/*
* Plugin Name: A Strenga Projects
* Version: 1.0
* Description: Projects for Strenga
* Author: DD
*/
if ( ! defined( \'ABSPATH\' ) ) exit;
define ( \'STRENGA_PROJECTS_DIR\', rtrim( plugin_dir_path( __FILE__ ), \'/\' ) );
require_once( STRENGA_PROJECTS_DIR . \'/includes/plugin.php\' );
function myFoofunction() {
ladeda(); // defined in plugin.php
}
myFoofunction();