Javascript Wordpress-致命错误:“0”;对非对象调用成员函数get_var();但前提是不能作为模板

Javascript Wordpress-致命错误:“0”;对非对象调用成员函数get_var();但前提是不能作为模板,javascript,php,mysql,json,wordpress,Javascript,Php,Mysql,Json,Wordpress,我得到“致命错误:对非对象调用成员函数get_var()” 使用search.php中的以下代码: global $owndb; $testtable = $owndb -> prefix. "stuff"; $values = $owndb->get_var( "SELECT COUNT(*) FROM $testtable" ); require($_SERVER['DOCUMENT_ROOT'].'wp-load.php'); $owndb是在我的处于活动状态的插件中使用n

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

使用search.php中的以下代码:

global $owndb;
$testtable = $owndb -> prefix. "stuff";
$values = $owndb->get_var( "SELECT COUNT(*) FROM $testtable" );
require($_SERVER['DOCUMENT_ROOT'].'wp-load.php');
$owndb是在我的处于活动状态的插件中使用
new wpdb
创建的。search.php位于“page templates”下的主题文件夹中,但未定义为模板。该文件仅由JavaScript文件调用以发送数据。如果我将其声明为模板(在开头添加“template Name”)错误消失了。我尝试将search.php存储在不同的位置(例如插件目录),但没有帮助

为什么我必须将它声明为模板,我如何才能绕过它


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

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

global $owndb;
$testtable = $owndb -> prefix. "stuff";
$values = $owndb->get_var( "SELECT COUNT(*) FROM $testtable" );
require($_SERVER['DOCUMENT_ROOT'].'wp-load.php');

什么是
$owndb
。它不应该是
$wpdb
$owndb
不是一个对象,并且它没有与
$wpdb
相同的成员,您必须向我们展示如何创建它?$owndb是一个外部数据库,而不是Wordpress使用的数据库。$owndb=new wpdb()在我的插件中建立到这个数据库的连接;当我将search.php声明为模板时,从数据库中获取数据时,这就起作用了