Question

Dans main.js, J'ai un script, qui envoie une demande ajax à script.php.

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

script.php Validez certaines données et écrivez les données dans la base de données. Pour cela, j'utilise le $wpdb objet par wordpress ($wpdb->insert()). Normalement, WordPress fournit une variable globale, $wpdb, qui est une instanciation de la classe déjà configurée pour parler à la base de données WordPress. Mais pas dans mon cas. J'obtiens l'erreur suivante

Erreur fatale: appel à une fonction membre insert () sur un non-objet

Si je fais

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

dans script.php, il m'a dit tout le temps «la classe WPDB n'existe pas». Si je fais de même dans function.php, la classe WPDB existe. Mais pourquoi? Script.php et function.php sont dans le même répertoire. Et $wpdb est chargé automatique et configuré à Global par WordPress. J'ai donc accès tout le temps, n'a pas d'importance dans quel répertoire je suis, non ?!

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

.... ne fonctionne pas non plus. Les constantes ne sont pas définies dans script.php, aussi. Où est ma faute? register_globals = on dans php.ini. n'a rien changé. : /

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à wordpress.stackexchange
scroll top