Wordpress - 致命错误:“在非对象上调用成员函数get_var()”但仅限于不作为模板

时间:2014-07-26 13:17:12

标签: javascript php mysql json wordpress

我得到“致命错误:”在非对象上调用成员函数get_var()“

在search.php中使用此代码:

global $owndb;
$testtable = $owndb -> prefix. "stuff";
$values = $owndb->get_var( "SELECT COUNT(*) FROM $testtable" );

$ owndb是在我的插件中使用new wpdb创建的,它是活动的。 search.php位于“page-templates”下的主题文件夹中,但未定义为模板。该文件仅由JavaScript文件调用以发送数据。如果我将其声明为模板(在开头添加“模板名称”),则错误消失。我试图将search.php存储在不同的位置(例如插件目录),但这没有帮助。

为什么我必须将其声明为模板,我该如何规避它?

我看到了关于错误的几个问题,但没有找到适合的解决方案。谢谢!

1 个答案:

答案 0 :(得分:2)

我找到了解决方案。当search.php未被声明为模板(或插件)时,它在Wordpress之外工作。要使用$owndb和Wordpress全局变量,我必须在search.php的开头加载wp-load.php:

require($_SERVER['DOCUMENT_ROOT'].'wp-load.php');