WordPress Version: 5.6
/**
* Finds the matching schema among the "anyOf" schemas.
*
* @since 5.6.0
*
* @param mixed $value The value to validate.
* @param array $args The schema array to use.
* @param string $param The parameter name, used in error messages.
* @return array|WP_Error The matching schema or WP_Error instance if all schemas do not match.
*/
function rest_find_any_matching_schema($value, $args, $param)
{
$errors = array();
foreach ($args['anyOf'] as $index => $schema) {
if (!isset($schema['type']) && isset($args['type'])) {
$schema['type'] = $args['type'];
}
$is_valid = rest_validate_value_from_schema($value, $schema, $param);
if (!is_wp_error($is_valid)) {
return $schema;
}
$errors[] = array('error_object' => $is_valid, 'schema' => $schema, 'index' => $index);
}
return rest_get_combining_operation_error($value, $param, $errors);
}