[wp-trac] [WordPress Trac] #64098: Introduce Abilities API
WordPress Trac
noreply at wordpress.org
Wed Oct 22 07:20:07 UTC 2025
#64098: Introduce Abilities API
--------------------------------------------------+---------------------
Reporter: gziolo | Owner: gziolo
Type: feature request | Status: closed
Priority: normal | Milestone: 6.9
Component: General | Version: trunk
Severity: normal | Resolution: fixed
Keywords: has-patch 2nd-opinion has-unit-tests | Focuses:
--------------------------------------------------+---------------------
Description changed by gziolo:
Old description:
> Part of [https://make.wordpress.org/ai/2025/07/17/ai-building-blocks/ AI
> Building Blocks for WordPress ].
>
> > The Abilities API transforms WordPress from a collection of isolated
> functions into a unified, discoverable system. By creating a central
> registry of capabilities, it allows AI agents, automation tools, and
> developers to understand and interact with everything WordPress can do –
> from CLI commands and REST API endpoints to custom logic and plugin
> functions.
>
> Full proposal at https://make.wordpress.org/ai/2025/07/17/abilities-api/.
> Handbook page at https://make.wordpress.org/ai/handbook/projects
> /abilities-api/.
> Documentation in https://github.com/WordPress/abilities-
> api/tree/trunk/docs.
> Developed in https://github.com/WordPress/abilities-api.
> Composer package: https://packagist.org/packages/wordpress/abilities-api.
New description:
Part of [https://make.wordpress.org/ai/2025/07/17/ai-building-blocks/ AI
Building Blocks for WordPress ].
> The Abilities API transforms WordPress from a collection of isolated
functions into a unified, discoverable system. By creating a central
registry of capabilities, it allows AI agents, automation tools, and
developers to understand and interact with everything WordPress can do –
from CLI commands and REST API endpoints to custom logic and plugin
functions.
Full proposal at https://make.wordpress.org/ai/2025/07/17/abilities-api/.
Handbook page at https://make.wordpress.org/ai/handbook/projects
/abilities-api/.
Documentation in https://github.com/WordPress/abilities-
api/tree/trunk/docs.
Developed in https://github.com/WordPress/abilities-api.
Composer package: https://packagist.org/packages/wordpress/abilities-api.
Introduces a new Abilities API that allows WordPress plugins and themes to
register and execute custom abilities with built-in permission checking,
input/output validation via JSON Schema, and REST API integration.
## Public Functions
### Ability Management
- `wp_register_ability( string $name, array $args ): ?WP_Ability` -
Registers a new ability (must be called on `wp_abilities_api_init` hook)
- `wp_unregister_ability( string $name ): ?WP_Ability` - Unregisters an
ability
- `wp_has_ability( string $name ): bool` - Checks if an ability is
registered
- `wp_get_ability( string $name ): ?WP_Ability` - Retrieves a registered
ability
- `wp_get_abilities(): array` - Retrieves all registered abilities
### Ability Category Management
- `wp_register_ability_category( string $slug, array $args ):
?WP_Ability_Category` - Registers an ability category (must be called on
`wp_abilities_api_categories_init` hook)
- `wp_unregister_ability_category( string $slug ): ?WP_Ability_Category` -
Unregisters an ability category
- `wp_has_ability_category( string $slug ): bool` - Checks if an ability
category is registered
- `wp_get_ability_category( string $slug ): ?WP_Ability_Category` -
Retrieves a registered ability category
- `wp_get_ability_categories(): array` - Retrieves all registered ability
categories
## Public Classes
- `WP_Ability` - Encapsulates ability properties and methods (execute,
check_permission, validate_input, etc.)
- `WP_Ability_Category` - Encapsulates ability category properties
- `WP_Abilities_Registry` - Manages ability registration and lookup
(private, accessed via functions)
- `WP_Ability_Categories_Registry` - Manages ability category registration
(private, accessed via functions)
- `WP_REST_Abilities_V1_Categories_Controller` - REST controller for
listing category abilities
- `WP_REST_Abilities_V1_List_Controller` - REST controller for listing
abilities
- `WP_REST_Abilities_V1_Run_Controller` - REST controller for executing
abilities
## REST API Endpoints
### Namespace: `wp-abilities/v1`
#### List Category Abilities
- `GET /wp-abilities/v1/categories` - Retrieve all registered ability
categories
- Query parameters: `page`, `per_page`
#### Get Single Category Ability
- `GET /wp-abilities/v1/categories/(?P<slug>[a-z0-9]+(?:-[a-z0-9]+)*)` -
Retrieve a specific ability category by name
#### List Abilities
- `GET /wp-abilities/v1/abilities` - Retrieve all registered abilities
- Query parameters: `page`, `per_page`, `category`
#### Get Single Ability
- `GET /wp-abilities/v1/abilities/(?P<name>[a-zA-Z0-9\-\/]+)` - Retrieve a
specific ability by name
#### Execute Ability
- `GET|POST|DELETE /wp-
abilities/v1/abilities/(?P<name>[a-zA-Z0-9\-\/]+)/run` - Execute an
ability
- Supports multiple HTTP methods based on ability annotations
- Validates input against ability's input schema
- Validates output against ability's output schema
- Performs permission checks via ability's permission callback
## Hooks
### Actions
- `wp_abilities_api_categories_init` - Fired when ability categories
registry is initialized (register categories here)
- `wp_abilities_api_init` - Fired when abilities registry is initialized
(register abilities here)
- `wp_before_execute_ability` - Fired before an ability gets executed,
after input validation and permissions check
- `wp_after_execute_ability` - Fires immediately after an ability finished
executing
### Filters
- `wp_register_ability_category_args` - Filters ability category arguments
before registration
- `wp_register_ability_args` - Filters ability arguments before
registration
--
--
Ticket URL: <https://core.trac.wordpress.org/ticket/64098#comment:45>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform
More information about the wp-trac
mailing list