将插件文件正确包含在主插件文件中


Including plugin files into main plugin file properly

我已经遇到这个问题一段时间了,但一直在解决这个问题,我终于解决了它。

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

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没有认识到它自己的功能,我如何包含文件以使代码正常运行?

提前致谢

您必须

在启用WP_DEBUG的情况下进行开发。它转储一个错误:wrapper is disabled in the server configuration 。这导致我这样做:"相信我,你不想包含来自 URL。

然后我意识到你用plugin_dir_url()来定义这个常量,而你需要的是一条路径。以下魔术常量完成这项工作:

include_once __DIR__ . '/competition_table.php';

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

出于某种原因,魔术常量并不总是适用于wordpress,但是,您可以使用它等效地获得相同的效果:

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

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