J'essaie d'utiliser cette fonction. Je n'arrive pas à comprendre pourquoi j'obtiens toujours l'erreur PHP. Tout ce que je peux comprendre, c'est que, pour une raison quelconque, le modèle ne peut pas accéder à $ wpdb. Je ne sais pas quelle ligne doit être placée dans le fichier functions.php (dans le dossier du thème) contenant cette fonction. Aidez-moi, s'il vous plaît!!
function submitWeightUpdate( $userid, $weight ) {
global $wpdb;
$result = $wpdb->insert( 'wp_weights', array( 'user_id' => $userid, 'current_weight' => $weight ), array( '%d', '%d' ) );
if (empty($_POST['weight'])) {
$return['error'] = true;
$return['msg'] = 'You did not enter a weight.';
}
else {
$return['error'] = false;
$return['msg'] = 'You\'ve entered: ' . $weight . ' as your new weight.';
}
echo json_encode($return);
}
J'ai également essayé de définir le thème par défaut et il ne fonctionne toujours pas. Je ne sais donc pas ce qui ne va pas!
Vous avez tout fait correctement avec la globalisation, le message d'erreur vous indique simplement que vous avez appelé une fonction sur $ wpdb qui n'existe pas.
Vérifiez juste avant de faire que $ wpdb contient l’objet qui vous intéresse:
if (is_object($wpdb) && is_a($wpdb, 'wpdb')) {
$result = $wpdb->insert( 'wp_weights', array( 'user_id' => $userid, 'current_weight' => $weight ), array( '%d', '%d' ) );
}
Vous pouvez également ajouter ceci sous la ligne globale pour en savoir plus:
global $wpdb;
var_dump($wpdb); // dump variable type and contents.
Essayez en plus:
require_once( ABSPATH . 'wp-load.php' );
global $wpdb;
WordPress n'est peut-être pas prêt à vous fournir ce dont vous avez besoin dans $ wpdb.
Il est probable que $ wpdb a été mondialisé lorsqu'il frappe votre fonction particulière. Essayez de vérifier $ GLOBALS et s'il y a une entrée pour $ wpdb, supprimez la ligne $ global $ wpdb; au début de votre funciton.