3

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

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

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 不能识别它自己的功能,我怎样才能包含文件以使代码正常运行?

提前致谢

4

2 回答 2

1

您必须在WP_DEBUG启用的情况下进行开发。它转储一个错误:wrapper is disabled in the server configuration. 这让我想到了这个:“相信我,你不想从 URL 中包含。

然后我意识到你正在用 定义那个常量plugin_dir_url(),而你需要的是一个路径。下面的魔法常数可以完成这项工作:

include_once __DIR__ . '/competition_table.php';
于 2013-10-30T15:55:51.760 回答
1

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

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

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

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

于 2013-10-31T08:42:33.677 回答