Make WordPress Core

Changeset 61045


Ignore:
Timestamp:
10/22/2025 07:05:24 AM (8 weeks ago)
Author:
gziolo
Message:

Abilities API: Add Ability Categories REST API controller

Introduces a new REST API endpoint at wp-abilities/v1/categories to expose
ability categories through the WordPress REST API.

The new WP_REST_Abilities_V1_Categories_Controller provides:

  • GET /wp-abilities/v1/categories - Lists all ability categories with pagination
  • GET /wp-abilities/v1/categories/{slug} - Retrieves a single category by slug

Both endpoints require the read capability and return category data including
slug, label, description, and metadata. The collection endpoint supports pagination
with page and per_page parameters (default: 50, max: 100).

Developed in https://github.com/WordPress/wordpress-develop/pull/10380.

Follow-up [61032].

Props gziolo, jason_the_adams, timothyblynjacobs.
Fixes #64098.

Location:
trunk
Files:
2 added
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/rest-api.php

    r61036 r61045  
    486486
    487487    // Abilities.
     488    $abilities_categories_controller = new WP_REST_Abilities_V1_Categories_Controller();
     489    $abilities_categories_controller->register_routes();
    488490    $abilities_run_controller = new WP_REST_Abilities_V1_Run_Controller();
    489491    $abilities_run_controller->register_routes();
  • trunk/src/wp-settings.php

    r61032 r61045  
    337337require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-font-faces-controller.php';
    338338require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-font-collections-controller.php';
     339require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-abilities-v1-categories-controller.php';
    339340require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-abilities-v1-list-controller.php';
    340341require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-abilities-v1-run-controller.php';
  • trunk/tests/phpunit/tests/rest-api/rest-schema-setup.php

    r61032 r61045  
    205205            '/wp/v2/font-families/(?P<id>[\d]+)',
    206206            '/wp-abilities/v1',
     207            '/wp-abilities/v1/categories',
     208            '/wp-abilities/v1/categories/(?P<slug>[a-z0-9]+(?:-[a-z0-9]+)*)',
    207209            '/wp-abilities/v1/abilities/(?P<name>[a-zA-Z0-9\-\/]+?)/run',
    208210            '/wp-abilities/v1/abilities/(?P<name>[a-zA-Z0-9\-\/]+)',
  • trunk/tests/qunit/fixtures/wp-api-generated.js

    r61032 r61045  
    1351413514            }
    1351513515        },
     13516        "/wp-abilities/v1/categories": {
     13517            "namespace": "wp-abilities/v1",
     13518            "methods": [
     13519                "GET"
     13520            ],
     13521            "endpoints": [
     13522                {
     13523                    "methods": [
     13524                        "GET"
     13525                    ],
     13526                    "args": {
     13527                        "context": {
     13528                            "description": "Scope under which the request is made; determines fields present in response.",
     13529                            "type": "string",
     13530                            "enum": [
     13531                                "view",
     13532                                "embed",
     13533                                "edit"
     13534                            ],
     13535                            "default": "view",
     13536                            "required": false
     13537                        },
     13538                        "page": {
     13539                            "description": "Current page of the collection.",
     13540                            "type": "integer",
     13541                            "default": 1,
     13542                            "minimum": 1,
     13543                            "required": false
     13544                        },
     13545                        "per_page": {
     13546                            "description": "Maximum number of items to be returned in result set.",
     13547                            "type": "integer",
     13548                            "default": 50,
     13549                            "minimum": 1,
     13550                            "maximum": 100,
     13551                            "required": false
     13552                        }
     13553                    }
     13554                }
     13555            ],
     13556            "_links": {
     13557                "self": [
     13558                    {
     13559                        "href": "http://example.org/index.php?rest_route=/wp-abilities/v1/categories"
     13560                    }
     13561                ]
     13562            }
     13563        },
     13564        "/wp-abilities/v1/categories/(?P<slug>[a-z0-9]+(?:-[a-z0-9]+)*)": {
     13565            "namespace": "wp-abilities/v1",
     13566            "methods": [
     13567                "GET"
     13568            ],
     13569            "endpoints": [
     13570                {
     13571                    "methods": [
     13572                        "GET"
     13573                    ],
     13574                    "args": {
     13575                        "slug": {
     13576                            "description": "Unique identifier for the ability category.",
     13577                            "type": "string",
     13578                            "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
     13579                            "required": false
     13580                        }
     13581                    }
     13582                }
     13583            ]
     13584        },
    1351613585        "/wp-abilities/v1/abilities/(?P<name>[a-zA-Z0-9\\-\\/]+?)/run": {
    1351713586            "namespace": "wp-abilities/v1",
Note: See TracChangeset for help on using the changeset viewer.