我编写了一个 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/