rest_handle_multi_type_schema

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

WordPress Version: 5.6

/**
 * Handles getting the best type for a multi-type schema.
 *
 * This is a wrapper for {@see rest_get_best_type_for_value()} that handles
 * backward compatibility for schemas that use invalid types.
 *
 * @since 5.5.0
 *
 * @param mixed  $value The value to check.
 * @param array  $args  The schema array to use.
 * @param string $param The parameter name, used in error messages.
 * @return string
 */
function rest_handle_multi_type_schema($value, $args, $param = '')
{
    $allowed_types = array('array', 'object', 'string', 'number', 'integer', 'boolean', 'null');
    $invalid_types = array_diff($args['type'], $allowed_types);
    if ($invalid_types) {
        _doing_it_wrong(
            __FUNCTION__,
            /* translators: 1: Parameter, 2: List of allowed types. */
            wp_sprintf(__('The "type" schema keyword for %1$s can only contain the built-in types: %2$l.'), $param, $allowed_types),
            '5.5.0'
        );
    }
    $best_type = rest_get_best_type_for_value($value, $args['type']);
    if (!$best_type) {
        if (!$invalid_types) {
            return '';
        }
        // Backward compatibility for previous behavior which allowed the value if there was an invalid type used.
        $best_type = reset($invalid_types);
    }
    return $best_type;
}

WordPress Version: 5.5

/**
 * Handles getting the best type for a multi-type schema.
 *
 * This is a wrapper for {@see rest_get_best_type_for_value()} that handles
 * backward compatibility for schemas that use invalid types.
 *
 * @since 5.5.0
 *
 * @param mixed  $value The value to check.
 * @param array  $args  The schema array to use.
 * @param string $param The parameter name, used in error messages.
 * @return string
 */
function rest_handle_multi_type_schema($value, $args, $param = '')
{
    $allowed_types = array('array', 'object', 'string', 'number', 'integer', 'boolean', 'null');
    $invalid_types = array_diff($args['type'], $allowed_types);
    if ($invalid_types) {
        _doing_it_wrong(
            __FUNCTION__,
            /* translators: 1. Parameter. 2. List of allowed types. */
            wp_sprintf(__('The "type" schema keyword for %1$s can only contain the built-in types: %2$l.'), $param, $allowed_types),
            '5.5.0'
        );
    }
    $best_type = rest_get_best_type_for_value($value, $args['type']);
    if (!$best_type) {
        if (!$invalid_types) {
            return '';
        }
        // Backward compatibility for previous behavior which allowed the value if there was an invalid type used.
        $best_type = reset($invalid_types);
    }
    return $best_type;
}