status = $status; $this->meta = $meta; $this->location = $location; } public function send() { if ($this->status === self::REDIRECT && $this->location) { header("Location: " . $this->location, true, $this->status); exit; } WPFunctions::get()->statusHeader($this->status); $data = $this->getData(); $response = []; if (!empty($this->meta)) { $response['meta'] = $this->meta; } if ($data === null) { $data = []; } $response = array_merge($response, $data); @header('Content-Type: application/json; charset=' . get_option('blog_charset')); echo wp_json_encode($response); die(); } public abstract function getData(); }