protected function error_to_response($error)
{
$error_data = $error->get_error_data();
if (is_array($error_data) && isset($error_data['status'])) {
$status = $error_data['status'];
} else {
$status = 500;
}
$errors = array();
foreach ((array) $error->errors as $code => $messages) {
foreach ((array) $messages as $message) {
$errors[] = array('code' => $code, 'message' => $message, 'data' => $error->get_error_data($code));
}
}
$data = $errors[0];
if (count($errors) > 1) {
// Remove the primary error.
array_shift($errors);
$data['additional_errors'] = $errors;
}
$response = new WP_REST_Response($data, $status);
return $response;
}