rest_find_one_matching_schema() WordPress Function
The rest_find_one_matching_schema() function is used to find and return a single value from a WordPress database table that matches a given schema. This function is useful for retrieving data from a WordPress database table when you know the schema but not the exact data that you are looking for. For example, if you want to retrieve a user's email address from the WordPress usermeta table, you can use the rest_find_one_matching_schema() function to find and return the email address that matches the usermeta schema.
rest_find_one_matching_schema( mixed $value, array $args, string $param, bool $stop_after_first_match = false ) #
Finds the matching schema among the “oneOf” schemas.
Parameters
- $value
(mixed)(Required)The value to validate.
- $args
(array)(Required)The schema array to use.
- $param
(string)(Required)The parameter name, used in error messages.
- $stop_after_first_match
(bool)(Optional) Whether the process should stop after the first successful match.
Default value: false
Return
(array|WP_Error) The matching schema or WP_Error instance if the number of matching schemas is not equal to one.
Source
File: wp-includes/rest-api.php
function rest_find_one_matching_schema( $value, $args, $param, $stop_after_first_match = false ) { $matching_schemas = array(); $errors = array(); foreach ( $args['oneOf'] 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 ) ) { if ( $stop_after_first_match ) { return $schema; } $matching_schemas[] = array( 'schema_object' => $schema, 'index' => $index, ); } else { $errors[] = array( 'error_object' => $is_valid, 'schema' => $schema, 'index' => $index, ); } } if ( ! $matching_schemas ) { return rest_get_combining_operation_error( $value, $param, $errors ); } if ( count( $matching_schemas ) > 1 ) { $schema_positions = array(); $schema_titles = array(); foreach ( $matching_schemas as $schema ) { $schema_positions[] = $schema['index']; if ( isset( $schema['schema_object']['title'] ) ) { $schema_titles[] = $schema['schema_object']['title']; } } // If each schema has a title, include those titles in the error message. if ( count( $schema_titles ) === count( $matching_schemas ) ) { return new WP_Error( 'rest_one_of_multiple_matches', /* translators: 1: Parameter, 2: Schema titles. */ wp_sprintf( __( '%1$s matches %2$l, but should match only one.' ), $param, $schema_titles ), array( 'positions' => $schema_positions ) ); } return new WP_Error( 'rest_one_of_multiple_matches', /* translators: %s: Parameter. */ sprintf( __( '%s matches more than one of the expected formats.' ), $param ), array( 'positions' => $schema_positions ) ); } return $matching_schemas[0]['schema_object']; }
Expand full source codeCollapse full source codeView on TracView on GitHub
Changelog
Version | Description |
---|---|
5.6.0 | Introduced. |