-
Notifications
You must be signed in to change notification settings - Fork 49
Open
Description
The Abilities API currently validates ability input and output against JSON Schema using WordPress's built-in rest_validate_value_from_schema(), which supports only a subset of JSON Schema Draft 4 (aligning with WordPress core). This approach is reliable for core compatibility but limits extenders to dated JSON Schema features, missing newer ones like $ref references for composability and reusability, and not keyword to exclude patterns.
Developers extending the Abilities API that need more expressive schema validation have no way to override the default validator without forking or monkey-patching.
Proposed Solution
Introduce two hooks to allow custom validation:
/**
* Filter to override input validation for an ability.
*
* @param true|WP_Error $is_valid Validation result (true or WP_Error)
* @param mixed $input The input being validated
* @param array $input_schema The input schema definition
* @param string $ability_name The ability name
* @param WP_Ability $ability The ability instance
*/
apply_filters( 'wp_ability_validate_input', $is_valid, $input, $input_schema, $ability_name, $ability );
/**
* Filter to override output validation for an ability.
*
* @param true|WP_Error $is_valid Validation result (true or WP_Error)
* @param mixed $output The output being validated
* @param array $output_schema The output schema definition
* @param string $ability_name The ability name
* @param WP_Ability $ability The ability instance
*/
apply_filters( 'wp_ability_validate_output', $is_valid, $output, $output_schema, $ability_name, $ability );
Metadata
Metadata
Assignees
Labels
No labels