私はこのコードを持っています、しかし私がブラウザで手に入れるのは文字列としてのすべてのフィールドです。
add_action( 'rest_api_init', function () {
register_rest_route( 'restos/v1', '/resto/(?P<qname>.*)', 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;
}
私はreturn json_encode($res)
を試しましたが、それは役に立ちませんでした。どのように私はJSONで番号とブール値でオブジェクトを送信することができます。
$wpdb
クエリ結果には文字列出力タイプが想定されています。dbデータタイプは対応するPHPデータタイプにマッピングされていません。
あなたは自分でそれを大事にしなければならないでしょう。
$data = [
'int' => (int) '123',
'bool' => (bool) '1',
'string' => (string) 'abc'
];
return rest_ensure_response( $data );
残りの応答で:
{"int":123,"bool":true,"string":"abc"}
これは - カスタムラッパーを使ってwpdb
で自動的に扱うための、Matthew Boynesによる興味深いアプローチです。
単一行を取得するにはwpdb::get_row
を使用できます。