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

标签 database ajax plugins wordpress

我编写了一个 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 秒后,这会导致主页上出现“ fatal error :调用非对象上的成员函数 get_results()”。

如果我简单地让 Update.php 返回类似 rand() 的东西,那么它工作正常并用随机数更新 div。但是,如果我尝试在 Update.php 文件(例如 require_once("wp-blog-header.php");)中包含定义所有 Wordpress 类(即 $wpdb)的 header ,那么 AJAX 就会完全停止工作,甚至不会返回 rand(),但它防止上述 fatal error 的发生。

我完全迷路了。任何帮助或只是为我指明正确的方向将不胜感激。提前谢谢您,好心的先生们。

最佳答案

您正在使用 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()函数之前;

关于database - Wordpress 插件通过 AJAX 调用数据库结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5410806/

相关文章:

c++ - 如何使用 std 函数注册单例 qml 类型以在 Qt 中进行回调?

数据库触发器/参照完整性和内存缓存

c# - 无法将类型 'System.Linq.IQueryable<int>' 转换为 'int'

javascript - 无法访问服务器上的文件

php - 从 AJAX/php 文件返回变量

java - 如何在java中保存记录并使用记录值更新同一页面

c# - 如何使用 C# 创建浏览器插件?

php - 将 Redis 用于超时队列或排行榜

java - 在连续更新的批处理中运行时 couchdb 查询超时

netbeans - 需要解决方法或解决方案 : Unable to update plugins for NetBeans 12. 0