Abilities API Functions

Core functions for ability registration and management.

Source: wp-includes/abilities-api.php


wp_register_ability()

Registers a new ability. Must be called during wp_abilities_api_init action.

wp_register_ability( string $name, array $args ): ?WP_Ability

Parameters

Parameter Type Description
$name string Namespaced ability name (e.g., my-plugin/my-ability)
$args array Configuration array

Args

Key Type Required Description
label string Yes Human-readable label
description string Yes Detailed description
category string Yes Category slug (must be registered)
execute_callback callable Yes Execution function
permission_callback callable Yes Permission check function
input_schema array No JSON Schema for input validation
output_schema array No JSON Schema for output validation
meta array No Additional metadata
meta.annotations array No readonly, destructive, idempotent hints
meta.show_in_rest bool No Expose via REST API (default: false)
ability_class string No Custom class extending WP_Ability

Returns

WP_Ability on success, null on failure.

Example

add_action( 'wp_abilities_api_init', function() {
    wp_register_ability( 'my-plugin/analyze-text', array(
        'label'               => __( 'Analyze Text', 'my-plugin' ),
        'description'         => __( 'Performs sentiment analysis.', 'my-plugin' ),
        'category'            => 'text-processing',
        'execute_callback'    => 'my_plugin_analyze_text',
        'permission_callback' => fn() => current_user_can( 'edit_posts' ),
        'input_schema'        => array(
            'type'      => 'string',
            'minLength' => 10,
            'required'  => true,
        ),
        'output_schema'       => array(
            'type' => 'string',
            'enum' => array( 'positive', 'negative', 'neutral' ),
        ),
        'meta'                => array(
            'annotations'  => array( 'readonly' => true ),
            'show_in_rest' => true,
        ),
    ) );
} );

wp_unregister_ability()

Removes a registered ability.

wp_unregister_ability( string $name ): ?WP_Ability

Parameters

Parameter Type Description
$name string Ability name to unregister

Returns

Unregistered WP_Ability on success, null if not found.


wp_has_ability()

Checks if an ability is registered.

wp_has_ability( string $name ): bool

Parameters

Parameter Type Description
$name string Ability name to check

Returns

true if registered, false otherwise.


wp_get_ability()

Retrieves a registered ability.

wp_get_ability( string $name ): ?WP_Ability

Parameters

Parameter Type Description
$name string Ability name

Returns

WP_Ability instance or null if not registered.


wp_get_abilities()

Retrieves all registered abilities.

wp_get_abilities(): array

Returns

Array of WP_Ability instances.


wp_register_ability_category()

Registers a new ability category. Must be called during wp_abilities_api_categories_init action.

wp_register_ability_category( string $slug, array $args ): ?WP_Ability_Category

Parameters

Parameter Type Description
$slug string Category slug
$args array Configuration array

Args

Key Type Required Description
label string Yes Human-readable label
description string Yes Category description
meta array No Additional metadata

Returns

WP_Ability_Category on success, null on failure.

Example

add_action( 'wp_abilities_api_categories_init', function() {
    wp_register_ability_category( 'text-processing', array(
        'label'       => __( 'Text Processing', 'my-plugin' ),
        'description' => __( 'Abilities for analyzing text.', 'my-plugin' ),
    ) );
} );

wp_unregister_ability_category()

Removes a registered category.

wp_unregister_ability_category( string $slug ): ?WP_Ability_Category

wp_has_ability_category()

Checks if a category is registered.

wp_has_ability_category( string $slug ): bool

wp_get_ability_category()

Retrieves a registered category.

wp_get_ability_category( string $slug ): ?WP_Ability_Category

wp_get_ability_categories()

Retrieves all registered categories.

wp_get_ability_categories(): array