我编写了一个Wordpress插件,可以为页面生成内容,然后尝试通过jQuery.load调用Update.php来刷新结果。例如:
插件会生成以下内容:
global $wpdb;
$sql = "SELECT * FROM table ORDER BY id;";
$results = $wpdb->get_results($sql);
<div id="content">Database Results Here Via Loop</div>
jQuery调用Update.php:
<script type="text/javascript">
$(function() {
var refresh = setInterval(function() {
$("#content").load("Update.php");
}, 5000);
});
Update.php包含:
<?php
function update_page() {
global $wpdb;
$sql = "SELECT * FROM table ORDER BY id;";
$results = $wpdb->get_results($sql);
echo "Parsed results go here";
}
update_page();
?>
5秒后,这会导致'致命错误:在主页上调用非对象上的成员函数get_results()。
如果我只是让Update.php返回类似rand()的东西,那么它工作正常并用随机数更新div。但是,如果我尝试在Update.php文件中包含定义所有Wordpress类(即$ wpdb)的头文件(例如require_once(“wp-blog-header.php”);)那么AJAX只是完全停止工作,并且甚至不会返回rand(),但它将防止发生上述致命错误。
我完全迷失了。任何帮助或只是指出我正确的方向将不胜感激。先谢谢你,亲切的先生。
答案 0 :(得分:3)
您正在使用ajax调用update.php文件,因此wordpress无法加载其他文件,因此它找不到$ wpdb对象定义所以您需要做的是 require_once wp-config.php和wp-includes / wp-db.php文件
并将对象创建为$wpdb = new wpdb(DB_USER, DB_PASSWORD, DB_NAME, DB_HOST);
答案 1 :(得分:1)
ADD THIS LINE on Update.php file
require_once('../../../wp-load.php');
function update_page() {
global $wpdb;
$sql = "SELECT * FROM table ORDER BY id;";
$results = $wpdb->get_results($sql);
echo "Parsed results go here";
}
update_page();