diff --git a/src/wp-includes/abilities-api/class-wp-ability.php b/src/wp-includes/abilities-api/class-wp-ability.php index d116080c1ccdc..2b18b93a7d1cb 100644 --- a/src/wp-includes/abilities-api/class-wp-ability.php +++ b/src/wp-includes/abilities-api/class-wp-ability.php @@ -445,10 +445,18 @@ public function normalize_input( $input = null ) { } $input_schema = $this->get_input_schema(); - if ( ! empty( $input_schema ) && array_key_exists( 'default', $input_schema ) ) { - return $input_schema['default']; + // This tries to compute a default value from the input schema properties. + // It is a very basic implementation and does not cover all JSON Schema features. + // It only looks for `default` values in the top-level `properties`. + if ( ! empty( $input_schema ) && array_key_exists( 'properties', $input_schema ) ) { + $result = array(); + foreach ( $input_schema['properties'] as $property_name => $property_schema ) { + if ( array_key_exists( 'default', $property_schema ) ) { + $result[ $property_name ] = $property_schema['default']; + } + } + return $result; } - return null; } diff --git a/src/wp-includes/abilities.php b/src/wp-includes/abilities.php index c71eeb158a304..a36d51b5224d4 100644 --- a/src/wp-includes/abilities.php +++ b/src/wp-includes/abilities.php @@ -96,11 +96,11 @@ function wp_register_core_abilities(): void { 'type' => 'string', 'enum' => $site_info_fields, ), + 'default' => array(), 'description' => __( 'Optional: Limit response to specific fields. If omitted, all fields are returned.' ), ), ), 'additionalProperties' => false, - 'default' => array(), ), 'output_schema' => array( 'type' => 'object',