Проблема при передаче данных в формате 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 );