我编写了一个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(),但它会阻止上述致命错误的发生。
我完全迷失了。任何帮助或只是指出我正确的方向将不胜感激。提前谢谢,亲切的先生们。
你使用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);
在函数update_page()之前;
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();