Плагин Wordpress, вызывающий результаты базы данных через AJAX - PullRequest
1 голос
/ 23 марта 2011

Я написал плагин Wordpress, который генерирует контент для страницы, а затем пытается вызвать Update.php через jQuery.load, чтобы обновить результаты.Например:

Плагин генерирует это содержимое:

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 случайным числом.Однако, если я попытаюсь включить заголовок, который определяет все классы Wordpress (например, $ wpdb) в файле Update.php (например, require_once ("wp-blog-header.php");), тогда AJAX просто перестает работать вообще,и даже не возвращает rand (), но он будет предотвращать упомянутую выше фатальную ошибку.

Я полностью потерян.Любая помощь или просто указав мне в правильном направлении будет принята с благодарностью.Заранее спасибо, добрые господа.

Ответы [ 2 ]

3 голосов
/ 02 июня 2011

вы вызываете файл update.php, используя ajax, поэтому 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 голос
/ 18 декабря 2012
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();
...