Domanda

In main.js, Ho uno script, che sta inviando una richiesta Ajax a script.php.

$.ajax({
    type: "POST",
    url:  "wp-content/themes/roots/script.php",
    data: registerdata,
    success: function(result)
    {
        alert(result);
    }
});
return false;

script.php Convalida alcuni dati e scrivi i dati nel database. Per questo, uso il $wpdb Oggetto di WordPress ($wpdb->insert()). Normalmente, WordPress fornisce una variabile globale, $wpdb, che è un'istanza della classe già impostata per parlare con il database WordPress. Ma non nel mio caso. Ricevo il seguente errore

Errore fatale: chiama a un insert funzione membro () su un non oggetto

Se lo faccio

if(class_exists('wpdb') == false){
    echo 'class wpdb doesnt exist';
}
else{
    echo 'class wpdb exists';
}

in script.php, mi ha detto tutto il tempo "Classe wpdb non esiste". Se faccio lo stesso in function.php, Class WPDB esiste. Ma perché? Script.php e function.php sono nella stessa directory. E $wpdb viene caricato automatico e impostato su Global da WordPress. Quindi ho sempre accesso, non importa in quale directory sono, giusto?!

realpath(ABSPATH . WPINC . '/wp-db.php')

.... anche non funziona. Le costanti non sono definite in script.php, anche. Dov'è colpa mia? register_globals = on in php.ini. non ha cambiato nulla. :/

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a wordpress.stackexchange
scroll top