【问题标题】:Wordpress Plugin Calling Database Results via AJAXWordpress 插件通过 AJAX 调用数据库结果
【发布时间】:2011-07-21 14:45:18
【问题描述】:

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


    【解决方案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();
    

    【讨论】:

      【解决方案2】:

      您正在使用 ajax 调用 update.php 文件,因此 wordpress 无法加载其他文件,因此找不到 $wpdb 对象定义,因此您需要做的是 需要一次 wp-config.php 和 wp-includes/wp-db.php 文件

      并创建一个对象为$wpdb = new wpdb(DB_USER, DB_PASSWORD, DB_NAME, DB_HOST);

      在函数update_page()之前;

      【讨论】:

        猜你喜欢
        • 2013-03-18
        • 1970-01-01
        • 2021-03-08
        • 2015-06-30
        • 2014-01-13
        • 2018-09-20
        • 1970-01-01
        • 2013-10-18
        • 2014-11-02
        相关资源
        最近更新 更多