Title: wp-includes/abilities-api/class-wp-ability.php | Developer.WordPress.org

---

# File: wp-includes/abilities-api/class-wp-ability.php

 * method[WP_Ability::invoke_callback()](https://developer.wordpress.org/reference/classes/wp_ability/invoke_callback/)
 * Invokes a callable, ensuring the input is passed through only if the input schema
   is defined.
 * Used by [2 functions](https://developer.wordpress.org/reference/classes/wp_ability/invoke_callback/#used-by)
   | Uses [1 function](https://developer.wordpress.org/reference/classes/wp_ability/invoke_callback/#uses)
   | Source: [wp-includes/abilities-api/class-wp-ability.php:505](https://github.com/WordPress/wordpress-develop/blob/6.9.4/src/wp-includes/abilities-api/class-wp-ability.php#L505-L512)
 * method[WP_Ability::check_permissions()](https://developer.wordpress.org/reference/classes/wp_ability/check_permissions/)
 * Checks whether the ability has the necessary permissions.
 * Used by [1 function](https://developer.wordpress.org/reference/classes/wp_ability/check_permissions/#used-by)
   | Uses [4 functions](https://developer.wordpress.org/reference/classes/wp_ability/check_permissions/#uses)
   | Source: [wp-includes/abilities-api/class-wp-ability.php:527](https://github.com/WordPress/wordpress-develop/blob/6.9.4/src/wp-includes/abilities-api/class-wp-ability.php#L527-L537)
 * method[WP_Ability::do_execute()](https://developer.wordpress.org/reference/classes/wp_ability/do_execute/)
 * Executes the ability callback.
 * Used by [1 function](https://developer.wordpress.org/reference/classes/wp_ability/do_execute/#used-by)
   | Uses [4 functions](https://developer.wordpress.org/reference/classes/wp_ability/do_execute/#uses)
   | Source: [wp-includes/abilities-api/class-wp-ability.php:547](https://github.com/WordPress/wordpress-develop/blob/6.9.4/src/wp-includes/abilities-api/class-wp-ability.php#L547-L557)
 * method[WP_Ability::validate_output()](https://developer.wordpress.org/reference/classes/wp_ability/validate_output/)
 * Validates output data against the output schema.
 * Used by [1 function](https://developer.wordpress.org/reference/classes/wp_ability/validate_output/#used-by)
   | Uses [6 functions](https://developer.wordpress.org/reference/classes/wp_ability/validate_output/#uses)
   | Source: [wp-includes/abilities-api/class-wp-ability.php:567](https://github.com/WordPress/wordpress-develop/blob/6.9.4/src/wp-includes/abilities-api/class-wp-ability.php#L567-L587)
 * method[WP_Ability::execute()](https://developer.wordpress.org/reference/classes/wp_ability/execute/)
 * Executes the ability after input validation and running a permission check.
 * Used by [0 functions](https://developer.wordpress.org/reference/classes/wp_ability/execute/#used-by)
   | Uses [11 functions](https://developer.wordpress.org/reference/classes/wp_ability/execute/#uses)
   | Source: [wp-includes/abilities-api/class-wp-ability.php:598](https://github.com/WordPress/wordpress-develop/blob/6.9.4/src/wp-includes/abilities-api/class-wp-ability.php#L598-L655)
 * hook[wp_before_execute_ability](https://developer.wordpress.org/reference/hooks/wp_before_execute_ability/)
 * Fires before an ability gets executed, after input validation and permissions
   check.
 * Used by [1 function](https://developer.wordpress.org/reference/hooks/wp_before_execute_ability/#used-by)
   | Uses [0 functions](https://developer.wordpress.org/reference/hooks/wp_before_execute_ability/#uses)
   | Source: [wp-includes/abilities-api/class-wp-ability.php:631](https://github.com/WordPress/wordpress-develop/blob/6.9.4/src/wp-includes/abilities-api/class-wp-ability.php#L631-L631)
 * hook[wp_after_execute_ability](https://developer.wordpress.org/reference/hooks/wp_after_execute_ability/)
 * Fires immediately after an ability finished executing.
 * Used by [1 function](https://developer.wordpress.org/reference/hooks/wp_after_execute_ability/#used-by)
   | Uses [0 functions](https://developer.wordpress.org/reference/hooks/wp_after_execute_ability/#uses)
   | Source: [wp-includes/abilities-api/class-wp-ability.php:652](https://github.com/WordPress/wordpress-develop/blob/6.9.4/src/wp-includes/abilities-api/class-wp-ability.php#L652-L652)
 * method[WP_Ability::__wakeup()](https://developer.wordpress.org/reference/classes/wp_ability/__wakeup/)
 * Wakeup magic method.
 * Used by [0 functions](https://developer.wordpress.org/reference/classes/wp_ability/__wakeup/#used-by)
   | Uses [0 functions](https://developer.wordpress.org/reference/classes/wp_ability/__wakeup/#uses)
   | Source: [wp-includes/abilities-api/class-wp-ability.php:664](https://github.com/WordPress/wordpress-develop/blob/6.9.4/src/wp-includes/abilities-api/class-wp-ability.php#L664-L666)
 * method[WP_Ability::get_meta_item()](https://developer.wordpress.org/reference/classes/wp_ability/get_meta_item/)
 * Retrieves a specific metadata item for the ability.
 * Used by [0 functions](https://developer.wordpress.org/reference/classes/wp_ability/get_meta_item/#used-by)
   | Uses [0 functions](https://developer.wordpress.org/reference/classes/wp_ability/get_meta_item/#uses)
   | Source: [wp-includes/abilities-api/class-wp-ability.php:426](https://github.com/WordPress/wordpress-develop/blob/6.9.4/src/wp-includes/abilities-api/class-wp-ability.php#L426-L428)
 * method[WP_Ability::__sleep()](https://developer.wordpress.org/reference/classes/wp_ability/__sleep/)
 * Sleep magic method.
 * Used by [0 functions](https://developer.wordpress.org/reference/classes/wp_ability/__sleep/#used-by)
   | Uses [0 functions](https://developer.wordpress.org/reference/classes/wp_ability/__sleep/#uses)
   | Source: [wp-includes/abilities-api/class-wp-ability.php:675](https://github.com/WordPress/wordpress-develop/blob/6.9.4/src/wp-includes/abilities-api/class-wp-ability.php#L675-L677)
 * method[WP_Ability::normalize_input()](https://developer.wordpress.org/reference/classes/wp_ability/normalize_input/)
 * Normalizes the input for the ability, applying the default value from the input
   schema when needed.
 * Used by [1 function](https://developer.wordpress.org/reference/classes/wp_ability/normalize_input/#used-by)
   | Uses [1 function](https://developer.wordpress.org/reference/classes/wp_ability/normalize_input/#uses)
   | Source: [wp-includes/abilities-api/class-wp-ability.php:442](https://github.com/WordPress/wordpress-develop/blob/6.9.4/src/wp-includes/abilities-api/class-wp-ability.php#L442-L453)
 * method[WP_Ability::validate_input()](https://developer.wordpress.org/reference/classes/wp_ability/validate_input/)
 * Validates input data against the input schema.
 * Used by [1 function](https://developer.wordpress.org/reference/classes/wp_ability/validate_input/#used-by)
   | Uses [6 functions](https://developer.wordpress.org/reference/classes/wp_ability/validate_input/#uses)
   | Source: [wp-includes/abilities-api/class-wp-ability.php:463](https://github.com/WordPress/wordpress-develop/blob/6.9.4/src/wp-includes/abilities-api/class-wp-ability.php#L463-L494)
 * method[WP_Ability::get_name()](https://developer.wordpress.org/reference/classes/wp_ability/get_name/)
 * Retrieves the name of the ability, with its namespace.
 * Used by [0 functions](https://developer.wordpress.org/reference/classes/wp_ability/get_name/#used-by)
   | Uses [0 functions](https://developer.wordpress.org/reference/classes/wp_ability/get_name/#uses)
   | Source: [wp-includes/abilities-api/class-wp-ability.php:347](https://github.com/WordPress/wordpress-develop/blob/6.9.4/src/wp-includes/abilities-api/class-wp-ability.php#L347-L349)
 * method[WP_Ability::get_label()](https://developer.wordpress.org/reference/classes/wp_ability/get_label/)
 * Retrieves the human-readable label for the ability.
 * Used by [0 functions](https://developer.wordpress.org/reference/classes/wp_ability/get_label/#used-by)
   | Uses [0 functions](https://developer.wordpress.org/reference/classes/wp_ability/get_label/#uses)
   | Source: [wp-includes/abilities-api/class-wp-ability.php:358](https://github.com/WordPress/wordpress-develop/blob/6.9.4/src/wp-includes/abilities-api/class-wp-ability.php#L358-L360)
 * method[WP_Ability::get_description()](https://developer.wordpress.org/reference/classes/wp_ability/get_description/)
 * Retrieves the detailed description for the ability.
 * Used by [0 functions](https://developer.wordpress.org/reference/classes/wp_ability/get_description/#used-by)
   | Uses [0 functions](https://developer.wordpress.org/reference/classes/wp_ability/get_description/#uses)
   | Source: [wp-includes/abilities-api/class-wp-ability.php:369](https://github.com/WordPress/wordpress-develop/blob/6.9.4/src/wp-includes/abilities-api/class-wp-ability.php#L369-L371)
 * method[WP_Ability::get_category()](https://developer.wordpress.org/reference/classes/wp_ability/get_category/)
 * Retrieves the ability category for the ability.
 * Used by [0 functions](https://developer.wordpress.org/reference/classes/wp_ability/get_category/#used-by)
   | Uses [0 functions](https://developer.wordpress.org/reference/classes/wp_ability/get_category/#uses)
   | Source: [wp-includes/abilities-api/class-wp-ability.php:380](https://github.com/WordPress/wordpress-develop/blob/6.9.4/src/wp-includes/abilities-api/class-wp-ability.php#L380-L382)
 * method[WP_Ability::get_input_schema()](https://developer.wordpress.org/reference/classes/wp_ability/get_input_schema/)
 * Retrieves the input schema for the ability.
 * Used by [3 functions](https://developer.wordpress.org/reference/classes/wp_ability/get_input_schema/#used-by)
   | Uses [0 functions](https://developer.wordpress.org/reference/classes/wp_ability/get_input_schema/#uses)
   | Source: [wp-includes/abilities-api/class-wp-ability.php:391](https://github.com/WordPress/wordpress-develop/blob/6.9.4/src/wp-includes/abilities-api/class-wp-ability.php#L391-L393)
 * method[WP_Ability::get_output_schema()](https://developer.wordpress.org/reference/classes/wp_ability/get_output_schema/)
 * Retrieves the output schema for the ability.
 * Used by [1 function](https://developer.wordpress.org/reference/classes/wp_ability/get_output_schema/#used-by)
   | Uses [0 functions](https://developer.wordpress.org/reference/classes/wp_ability/get_output_schema/#uses)
   | Source: [wp-includes/abilities-api/class-wp-ability.php:402](https://github.com/WordPress/wordpress-develop/blob/6.9.4/src/wp-includes/abilities-api/class-wp-ability.php#L402-L404)
 * method[WP_Ability::get_meta()](https://developer.wordpress.org/reference/classes/wp_ability/get_meta/)
 * Retrieves the metadata for the ability.
 * Used by [0 functions](https://developer.wordpress.org/reference/classes/wp_ability/get_meta/#used-by)
   | Uses [0 functions](https://developer.wordpress.org/reference/classes/wp_ability/get_meta/#uses)
   | Source: [wp-includes/abilities-api/class-wp-ability.php:413](https://github.com/WordPress/wordpress-develop/blob/6.9.4/src/wp-includes/abilities-api/class-wp-ability.php#L413-L415)
 * class[WP_Ability](https://developer.wordpress.org/reference/classes/wp_ability/)
 * Encapsulates the properties and methods related to a specific ability in the 
   registry.
 * Used by [0 functions](https://developer.wordpress.org/reference/classes/wp_ability/#used-by)
   | Uses [0 functions](https://developer.wordpress.org/reference/classes/wp_ability/#uses)
   | Source: [wp-includes/abilities-api/class-wp-ability.php:21](https://github.com/WordPress/wordpress-develop/blob/6.9.4/src/wp-includes/abilities-api/class-wp-ability.php#L21-L678)
 * method[WP_Ability::__construct()](https://developer.wordpress.org/reference/classes/wp_ability/__construct/)
 * Constructor.
 * Used by [0 functions](https://developer.wordpress.org/reference/classes/wp_ability/__construct/#used-by)
   | Uses [4 functions](https://developer.wordpress.org/reference/classes/wp_ability/__construct/#uses)
   | Source: [wp-includes/abilities-api/class-wp-ability.php:167](https://github.com/WordPress/wordpress-develop/blob/6.9.4/src/wp-includes/abilities-api/class-wp-ability.php#L167-L190)
 * method[WP_Ability::prepare_properties()](https://developer.wordpress.org/reference/classes/wp_ability/prepare_properties/)
 * Prepares and validates the properties used to instantiate the ability.
 * Used by [1 function](https://developer.wordpress.org/reference/classes/wp_ability/prepare_properties/#used-by)
   | Uses [2 functions](https://developer.wordpress.org/reference/classes/wp_ability/prepare_properties/#uses)
   | Source: [wp-includes/abilities-api/class-wp-ability.php:260](https://github.com/WordPress/wordpress-develop/blob/6.9.4/src/wp-includes/abilities-api/class-wp-ability.php#L260-L337)