正确地将插件文件包含到主插件文件中

时间:2013-10-30 15:28:50

标签: php wordpress-plugin wordpress

我已经有一段时间没遇到这个问题了,但是我一直在努力解决这个问题,我终于解决了这个问题。

我正在尝试将文件包含到我的主插件文档(包含插件标题和版本的文件)中,如下所示:

define('SBT_PLUGIN_URL', plugin_dir_url(__FILE__));

include(SBT_PLUGIN_URL . 'competition_table.php');
match_table.php里面的

是一个add_shortcode();需要运行的函数,以便用wordpress注册短代码:

function add_table() {
  //Run code here
}
add_shortcode('competition_table', 'add_table');

当我在网站上运行代码时链接正确解析,包括正确的文件,但是我得到了这个致命错误:

Call to undefined function add_shortcode()

但是,如果我将match_table.php中完全相同的代码添加到我的主插件文档中,那么代码运行完美。

基本上,我的问题是,为什么Wordpress不能识别它自己的功能?如何包含文件以使代码正常运行?

提前致谢

2 个答案:

答案 0 :(得分:1)

您必须在启用WP_DEBUG的情况下进行开发。它转储错误:wrapper is disabled in the server configuration。这引导我:"Trust me, you do not want to include from URLs."

然后我意识到你正在用plugin_dir_url()定义那个常数,当你需要的是路径时。以下magic constant完成了这项工作:

include_once __DIR__ . '/competition_table.php';

答案 1 :(得分:1)

感谢@b__的反馈,我设法解决了这个问题。

出于某种原因,Magic Constants并不总是使用wordpress,但是,你可以使用它等同于获得相同的效果:

include_once dirname(__FILE__) . '/competition_table.php';

当包含用于wordpress插件的文件时,你应该始终通过PATH而不是URL包含。