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

Php 正确地将插件文件包含到主插件文件中,php,wordpress,Php,Wordpress,这个问题我已经有一段时间了,但我一直在努力解决它,我想我最终会解决它的 我正在尝试将文件包括到我的主插件文档(其中包含插件标题和版本)中,如下所示: define('SBT_PLUGIN_URL', plugin_dir_url(__FILE__)); include(SBT_PLUGIN_URL . 'competition_table.php'); 在competition_table.php中有一个add_shortcode();需要运行的函数,以便在wordpress中注册快捷码:

这个问题我已经有一段时间了,但我一直在努力解决它,我想我最终会解决它的

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

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

include(SBT_PLUGIN_URL . 'competition_table.php');
在competition_table.php中有一个add_shortcode();需要运行的函数,以便在wordpress中注册快捷码:

function add_table() {
  //Run code here
}
add_shortcode('competition_table', 'add_table');
当我在站点上运行代码时,链接会正确解析,包括正确的文件,但我会遇到以下致命错误:

Call to undefined function add_shortcode()
但是,如果我将competition_table.php中完全相同的代码添加到我的主插件文档中,那么代码就可以完美地运行

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

提前感谢

您必须使用已启用的进行开发。它转储一个错误:
在服务器配置中禁用了包装器
。这让我想到了这一点:

然后我意识到你正在用
plugin\u dir\u url()
定义这个常量,而你需要的是一个路径。以下内容将完成此工作:

include_once __DIR__ . '/competition_table.php';

多亏@b_uuu的反馈,我成功地解决了这个问题

出于某些原因,魔法常数并不总是适用于wordpress,但是,您可以使用它的等效值来获得相同的效果:

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

当在wordpress插件中包含要使用的文件时,您应该始终通过路径而不是URL包含。

显示
competition\u table.php的基本结构。查看指南。这是一个简单的短码调用,出于所有目的,它是
函数add_table(){//run code here}
add_短码('competition_table','add_table')好的,我知道,但是上面的链接解释了为什么在请求代码问题的帮助时,您应该包括一个简短的、自包含的、正确的(可编译的)示例。代码已经编辑。对不起,我是新来的