rest_validate_array_value_from_schema

The timeline below displays how wordpress function rest_validate_array_value_from_schema has changed across different WordPress versions. If a version is not listed, refer to the next available version below.

WordPress Version: 7.1

/**
 * Validates an array value based on a schema.
 *
 * @since 5.7.0
 *
 * @param mixed  $value The value to validate.
 * @param array  $args  Schema array to use for validation.
 * @param string $param The parameter name, used in error messages.
 * @return true|WP_Error
 */
function rest_validate_array_value_from_schema($value, $args, $param)
{
    if (!rest_is_array($value)) {
        return new WP_Error(
            'rest_invalid_type',
            /* translators: 1: Parameter, 2: Type name. */
            sprintf(__('%1$s is not of type %2$s.'), $param, 'array'),
            array('param' => $param)
        );
    }
    $value = rest_sanitize_array($value);
    if (isset($args['items'])) {
        foreach ($value as $index => $v) {
            $is_valid = rest_validate_value_from_schema($v, $args['items'], $param . '[' . $index . ']');
            if (is_wp_error($is_valid)) {
                return $is_valid;
            }
        }
    }
    if (isset($args['minItems']) && count($value) < $args['minItems']) {
        return new WP_Error('rest_too_few_items', sprintf(
            /* translators: 1: Parameter, 2: Number. */
            _n('%1$s must contain at least %2$s item.', '%1$s must contain at least %2$s items.', $args['minItems']),
            $param,
            number_format_i18n($args['minItems'])
        ));
    }
    if (isset($args['maxItems']) && count($value) > $args['maxItems']) {
        return new WP_Error('rest_too_many_items', sprintf(
            /* translators: 1: Parameter, 2: Number. */
            _n('%1$s must contain at most %2$s item.', '%1$s must contain at most %2$s items.', $args['maxItems']),
            $param,
            number_format_i18n($args['maxItems'])
        ));
    }
    if (!empty($args['uniqueItems']) && !rest_validate_array_contains_unique_items($value)) {
        /* translators: %s: Parameter. */
        return new WP_Error('rest_duplicate_items', sprintf(__('%s has duplicate items.'), $param));
    }
    return true;
}

WordPress Version: 5.7

/**
 * Validates an array value based on a schema.
 *
 * @since 5.7.0
 *
 * @param mixed  $value The value to validate.
 * @param array  $args  Schema array to use for validation.
 * @param string $param The parameter name, used in error messages.
 * @return true|WP_Error
 */
function rest_validate_array_value_from_schema($value, $args, $param)
{
    if (!rest_is_array($value)) {
        return new WP_Error(
            'rest_invalid_type',
            /* translators: 1: Parameter, 2: Type name. */
            sprintf(__('%1$s is not of type %2$s.'), $param, 'array'),
            array('param' => $param)
        );
    }
    $value = rest_sanitize_array($value);
    if (isset($args['items'])) {
        foreach ($value as $index => $v) {
            $is_valid = rest_validate_value_from_schema($v, $args['items'], $param . '[' . $index . ']');
            if (is_wp_error($is_valid)) {
                return $is_valid;
            }
        }
    }
    if (isset($args['minItems']) && count($value) < $args['minItems']) {
        return new WP_Error(
            'rest_too_few_items',
            /* translators: 1: Parameter, 2: Number. */
            sprintf(_n('%1$s must contain at least %2$s item.', '%1$s must contain at least %2$s items.', $args['minItems']), $param, number_format_i18n($args['minItems']))
        );
    }
    if (isset($args['maxItems']) && count($value) > $args['maxItems']) {
        return new WP_Error(
            'rest_too_many_items',
            /* translators: 1: Parameter, 2: Number. */
            sprintf(_n('%1$s must contain at most %2$s item.', '%1$s must contain at most %2$s items.', $args['maxItems']), $param, number_format_i18n($args['maxItems']))
        );
    }
    if (!empty($args['uniqueItems']) && !rest_validate_array_contains_unique_items($value)) {
        /* translators: %s: Parameter. */
        return new WP_Error('rest_duplicate_items', sprintf(__('%s has duplicate items.'), $param));
    }
    return true;
}