我已经有一段时间没遇到这个问题了,但是我一直在努力解决这个问题,我终于解决了这个问题。
我正在尝试将文件包含到我的主插件文档(包含插件标题和版本的文件)中,如下所示:
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不能识别它自己的功能?如何包含文件以使代码正常运行?
提前致谢
答案 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包含。