我得到“致命错误:”在非对象上调用成员函数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存储在不同的位置(例如插件目录),但这没有帮助。
为什么我必须将其声明为模板,我该如何规避它?
我看到了关于错误的几个问题,但没有找到适合的解决方案。谢谢!
答案 0 :(得分:2)
我找到了解决方案。当search.php未被声明为模板(或插件)时,它在Wordpress之外工作。要使用$owndb
和Wordpress全局变量,我必须在search.php的开头加载wp-load.php:
require($_SERVER['DOCUMENT_ROOT'].'wp-load.php');