我已经遇到这个问题一段时间了,但一直在解决这个问题,我终于解决了它。
我正在尝试将文件包含在我的主插件文档(其中包含插件标题和版本的文档)中,如下所示:
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包含。