Wordpress插件通过AJAX调用数据库结果

时间:2011-03-23 19:50:25

标签: database ajax wordpress plugins wpdb

我编写了一个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(),但它防止发生上述致命错误。

我完全迷失了。任何帮助或只是指出我正确的方向将不胜感激。先谢谢你,亲切的先生。

2 个答案:

答案 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);

函数update_page();

之前的

答案 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();