Make WordPress Core

Changes between Version 45 and Version 47 of Ticket #64098


Ignore:
Timestamp:
10/22/2025 07:23:39 AM (7 weeks ago)
Author:
gziolo
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #64098

    • Property Keywords needs-dev-note needs-docs added; 2nd-opinion removed
  • Ticket #64098 – Description

    v45 v47  
    1111Introduces 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.
    1212
    13 ## Public Functions
     13== Public Functions
    1414
    15 ### Ability Management
     15=== Ability Management
    1616- `wp_register_ability( string $name, array $args ): ?WP_Ability` - Registers a new ability (must be called on `wp_abilities_api_init` hook)
    1717- `wp_unregister_ability( string $name ): ?WP_Ability` - Unregisters an ability
     
    2020- `wp_get_abilities(): array` - Retrieves all registered abilities
    2121
    22 ### Ability Category Management
     22=== Ability Category Management
    2323- `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)
    2424- `wp_unregister_ability_category( string $slug ): ?WP_Ability_Category` - Unregisters an ability category
     
    2727- `wp_get_ability_categories(): array` - Retrieves all registered ability categories
    2828
    29 ## Public Classes
     29== Public Classes
    3030
    3131- `WP_Ability` - Encapsulates ability properties and methods (execute, check_permission, validate_input, etc.)
     
    3737- `WP_REST_Abilities_V1_Run_Controller` - REST controller for executing abilities
    3838
    39 ## REST API Endpoints
     39== REST API Endpoints
    4040
    41 ### Namespace: `wp-abilities/v1`
     41=== Namespace: `wp-abilities/v1`
    4242
    43 #### List Category Abilities
     43==== List Category Abilities
    4444- `GET /wp-abilities/v1/categories` - Retrieve all registered ability categories
    4545  - Query parameters: `page`, `per_page`
    4646
    47 #### Get Single Category Ability
     47==== Get Single Category Ability
    4848- `GET /wp-abilities/v1/categories/(?P<slug>[a-z0-9]+(?:-[a-z0-9]+)*)` - Retrieve a specific ability category by name
    4949
    50 #### List Abilities
     50==== List Abilities
    5151- `GET /wp-abilities/v1/abilities` - Retrieve all registered abilities
    5252  - Query parameters: `page`, `per_page`, `category`
    5353
    54 #### Get Single Ability
     54==== Get Single Ability
    5555- `GET /wp-abilities/v1/abilities/(?P<name>[a-zA-Z0-9\-\/]+)` - Retrieve a specific ability by name
    5656
    57 #### Execute Ability
     57==== Execute Ability
    5858- `GET|POST|DELETE /wp-abilities/v1/abilities/(?P<name>[a-zA-Z0-9\-\/]+)/run` - Execute an ability
    5959  - Supports multiple HTTP methods based on ability annotations
     
    6262  - Performs permission checks via ability's permission callback
    6363
    64 ## Hooks
     64== Hooks
    6565
    66 ### Actions
     66=== Actions
    6767- `wp_abilities_api_categories_init` - Fired when ability categories registry is initialized (register categories here)
    6868- `wp_abilities_api_init` - Fired when abilities registry is initialized (register abilities here)
     
    7171- `wp_after_execute_ability` - Fires immediately after an ability finished executing
    7272
    73 ### Filters
     73=== Filters
    7474- `wp_register_ability_category_args` - Filters ability category arguments before registration
    7575- `wp_register_ability_args` - Filters ability arguments before registration