rest_validate_enum

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

WordPress Version: 5.7

/**
 * Validates that the given value is a member of the JSON Schema "enum".
 *
 * @since 5.7.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 true|WP_Error True if the "enum" contains the value or a WP_Error instance otherwise.
 */
function rest_validate_enum($value, $args, $param)
{
    $sanitized_value = rest_sanitize_value_from_schema($value, $args, $param);
    if (is_wp_error($sanitized_value)) {
        return $sanitized_value;
    }
    foreach ($args['enum'] as $enum_value) {
        if (rest_are_values_equal($sanitized_value, $enum_value)) {
            return true;
        }
    }
    $encoded_enum_values = array();
    foreach ($args['enum'] as $enum_value) {
        $encoded_enum_values[] = is_scalar($enum_value) ? $enum_value : wp_json_encode($enum_value);
    }
    if (count($encoded_enum_values) === 1) {
        /* translators: 1: Parameter, 2: Valid values. */
        return new WP_Error('rest_not_in_enum', wp_sprintf(__('%1$s is not %2$s.'), $param, $encoded_enum_values[0]));
    }
    /* translators: 1: Parameter, 2: List of valid values. */
    return new WP_Error('rest_not_in_enum', wp_sprintf(__('%1$s is not one of %2$l.'), $param, $encoded_enum_values));
}