* wp_unregister_ability_category( 'deprecated-category' );
* @see WP_Ability_Categories_Registry::unregister()
* @see wp_register_ability_category()
* @param string $slug The slug of the ability category to unregister.
* @return WP_Ability_Category|null The unregistered ability category instance on success, `null` on failure.
function wp_unregister_ability_category( string $slug ): ?WP_Ability_Category {
$registry = WP_Ability_Categories_Registry::get_instance();
if ( null === $registry ) {
return $registry->unregister( $slug );
* Checks if an ability category is registered.
* Use this for conditional logic and feature detection before attempting to
* retrieve or use an ability category.
* // Displays different UI based on available ability categories.
* if ( wp_has_ability_category( 'premium-features' ) ) {
* echo 'Premium Features Available';
* echo 'Standard Features';
* @see WP_Ability_Categories_Registry::is_registered()
* @see wp_get_ability_category()
* @param string $slug The slug of the ability category to check.
* @return bool `true` if the ability category is registered, `false` otherwise.
function wp_has_ability_category( string $slug ): bool {
$registry = WP_Ability_Categories_Registry::get_instance();
if ( null === $registry ) {
return $registry->is_registered( $slug );
* Retrieves a registered ability category.
* Returns the ability category instance for inspection or use. The instance provides access
* to the ability category's configuration and metadata.
* // Prints information about a registered ability category.
* $ability_category = wp_get_ability_category( 'content-management' );
* if ( $ability_category ) {
* echo $ability_category->get_label() . ': ' . $ability_category->get_description();
* @see WP_Ability_Categories_Registry::get_registered()
* @see wp_has_ability_category()
* @see wp_get_ability_categories()
* @param string $slug The slug of the ability category.
* @return WP_Ability_Category|null The ability category instance, or `null` if not registered.
function wp_get_ability_category( string $slug ): ?WP_Ability_Category {
$registry = WP_Ability_Categories_Registry::get_instance();
if ( null === $registry ) {
return $registry->get_registered( $slug );
* Retrieves all registered ability categories.
* Returns an array of all ability category instances currently registered in the system.
* Use this for discovery, debugging, or building administrative interfaces.
* // Prints information about all available ability categories.
* $ability_categories = wp_get_ability_categories();
* foreach ( $ability_categories as $ability_category ) {
* echo $ability_category->get_label() . ': ' . $ability_category->get_description() . "\n";
* @see WP_Ability_Categories_Registry::get_all_registered()
* @see wp_get_ability_category()
* @return WP_Ability_Category[] An array of registered ability category instances. Returns an empty array
* if no ability categories are registered or if the registry is unavailable.
function wp_get_ability_categories(): array {
$registry = WP_Ability_Categories_Registry::get_instance();
if ( null === $registry ) {
return $registry->get_all_registered();