функция
since 5.6.0
rest_find_one_matching_schema()
Проверено на WordPress 6.9, обновлено Источник: WordPress Developer Resources.
Сигнатура
rest_find_one_matching_schema( mixed $value, array $args, string $param, bool $stop_after_first_match = false ): array|WP_Error
Описание
Находит подходящую схему среди схем «oneOf».
Параметры
$value
mixed
обязательный
Значение для проверки.
$args
array
обязательный
Используемый массив схемы.
$param
string
обязательный
Имя параметра, используемое в сообщениях об ошибках.
$stop_after_first_match
bool
необязательный
= false
Следует ли останавливать процесс после первого успешного совпадения.
Возвращаемое значение
array|WP_Error
WP_Error
Исходный код
wp-includes/rest-api.php:1980
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'];
}
История изменений
| Версия | Описание |
|---|---|
| 5.6.0 | Introduced. |

