Проблема при передаче данных в формате JSON.
В файле functions.php у меня есть такой код:
if( isset($_REQUEST['status']) == 'activate'){ global $wpdb; $response = array(); $code = sanitize_text_field($_REQUEST['code']); $mycode = $wpdb->get_results( "SELECT * FROM wp_license WHERE license_key = '$code'", ARRAY_A ); if(!$mycode){ $response['error'] = 'ERROR'; } $response['code'] = $code; $response['domain'] = $_REQUEST['domain']; $res = wp_json_encode($response); echo $res; }
Я возвращаю данные в json и собственно проблема в том что - возвращается строка:
string(604) "{"code":"sd","domain":"domain.ru"}
как можно заметить, показано что в строке 604 символа и поэтому json_decode() возвращает NULL, заметил такое именно в WordPress, если я создам отдельный php файл и повторяю тот же код, то строка возвращается нормального размера. Как вообще такое может быть, пишет что в строке 604 символа, хотя визуально видно что нет там и 100 символов. Возможно кто-то сталкивался с подобным?
Для очистки SQL параметра используй $wpdb->prepare
Я разобрался сам в чем проблема. В момент вывода echo, в тело добавлялись ошибки: Warning: Cannot modify header information - headers already sent by
Решилось при помощи замены echo на wp_send_json( $response );