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

问题描述 投票:1回答:2

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

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

database ajax wordpress plugins wpdb
2个回答
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
投票
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();
© www.soinside.com 2019 - 2024. All rights reserved.