WP API gibt SQL-Ergebnisse als Zeichenfolgen statt als Zahlen zurück

Ich habe diesen Code, aber was ich im Browser bekomme, sind alle Felder – auch solche, die als Int und Bool in SQL gespeichert sind – als Strings.

add_action( 'rest_api_init', function () { register_rest_route( 'restos/v1', '/resto/(?P.*)', array( 'methods' => 'GET', 'callback' => 'handle_get', 'permission_callback' => function () { return current_user_can( 'edit_others_posts' ); } ) ); } ); function handle_get( $data ) { global $wpdb; $query = "SELECT * FROM `restaurants` WHERE `qname` = '".$data['qname']."' LIMIT 1"; $res = $wpdb->get_results($query)[0]; return $res; } 

Ich habe versucht return json_encode($res) aber das hat nicht geholfen. Wie kann ich ein Objekt mit Zahlen und Booleans in json gesendet werden.

Solutions Collecting From Web of "WP API gibt SQL-Ergebnisse als Zeichenfolgen statt als Zahlen zurück"

Der String-Ausgabetyp wird für $wpdb Abfrageergebnisse erwartet, die Datentypen der database sind nicht den entsprechenden PHP-Datentypen zugeordnet.

Sie müssen sich selbst darum kümmern, wie:

 $data = [ 'int' => (int) '123', 'bool' => (bool) '1', 'string' => (string) 'abc' ]; return rest_ensure_response( $data ); 

mit der Restantwort:

 {"int":123,"bool":true,"string":"abc"} 

Hier ist ein interessanter Ansatz von Matthew Boynes, um es in wpdb automatisch mit einem benutzerdefinierten Wrapper zu behandeln.

Beachten Sie, dass Sie wpdb::get_row , um eine einzelne Zeile zu erhalten.