Title: WP_REST_Abilities_V1_List_Controller::get_items
Published: February 24, 2026

---

# WP_REST_Abilities_V1_List_Controller::get_items( WP_REST_Request $request ): 󠀁[WP_REST_Response](https://developer.wordpress.org/reference/classes/wp_rest_response/)󠁿

## In this article

 * [Parameters](https://developer.wordpress.org/reference/classes/wp_rest_abilities_v1_list_controller/get_items/?output_format=md#parameters)
 * [Return](https://developer.wordpress.org/reference/classes/wp_rest_abilities_v1_list_controller/get_items/?output_format=md#return)
 * [Source](https://developer.wordpress.org/reference/classes/wp_rest_abilities_v1_list_controller/get_items/?output_format=md#source)
 * [Related](https://developer.wordpress.org/reference/classes/wp_rest_abilities_v1_list_controller/get_items/?output_format=md#related)
 * [Changelog](https://developer.wordpress.org/reference/classes/wp_rest_abilities_v1_list_controller/get_items/?output_format=md#changelog)

[ Back to top](https://developer.wordpress.org/reference/classes/wp_rest_abilities_v1_list_controller/get_items/?output_format=md#wp--skip-link--target)

Retrieves all abilities.

## 󠀁[Parameters](https://developer.wordpress.org/reference/classes/wp_rest_abilities_v1_list_controller/get_items/?output_format=md#parameters)󠁿

 `$request`[WP_REST_Request](https://developer.wordpress.org/reference/classes/wp_rest_request/)
required

Full details about the request.

## 󠀁[Return](https://developer.wordpress.org/reference/classes/wp_rest_abilities_v1_list_controller/get_items/?output_format=md#return)󠁿

 [WP_REST_Response](https://developer.wordpress.org/reference/classes/wp_rest_response/)
Response object on success.

## 󠀁[Source](https://developer.wordpress.org/reference/classes/wp_rest_abilities_v1_list_controller/get_items/?output_format=md#source)󠁿

    ```php
    public function get_items( $request ) {
    	$abilities = array_filter(
    		wp_get_abilities(),
    		static function ( $ability ) {
    			return $ability->get_meta_item( 'show_in_rest' );
    		}
    	);

    	// Filter by ability category if specified.
    	$category = $request['category'];
    	if ( ! empty( $category ) ) {
    		$abilities = array_filter(
    			$abilities,
    			static function ( $ability ) use ( $category ) {
    				return $ability->get_category() === $category;
    			}
    		);
    		// Reset array keys after filtering.
    		$abilities = array_values( $abilities );
    	}

    	$page     = $request['page'];
    	$per_page = $request['per_page'];
    	$offset   = ( $page - 1 ) * $per_page;

    	$total_abilities = count( $abilities );
    	$max_pages       = (int) ceil( $total_abilities / $per_page );

    	if ( $request->get_method() === 'HEAD' ) {
    		$response = new WP_REST_Response( array() );
    	} else {
    		$abilities = array_slice( $abilities, $offset, $per_page );

    		$data = array();
    		foreach ( $abilities as $ability ) {
    			$item   = $this->prepare_item_for_response( $ability, $request );
    			$data[] = $this->prepare_response_for_collection( $item );
    		}

    		$response = rest_ensure_response( $data );
    	}

    	$response->header( 'X-WP-Total', (string) $total_abilities );
    	$response->header( 'X-WP-TotalPages', (string) $max_pages );

    	$query_params = $request->get_query_params();
    	$base         = add_query_arg( urlencode_deep( $query_params ), rest_url( sprintf( '%s/%s', $this->namespace, $this->rest_base ) ) );

    	if ( $page > 1 ) {
    		$prev_page = $page - 1;
    		$prev_link = add_query_arg( 'page', $prev_page, $base );
    		$response->link_header( 'prev', $prev_link );
    	}

    	if ( $page < $max_pages ) {
    		$next_page = $page + 1;
    		$next_link = add_query_arg( 'page', $next_page, $base );
    		$response->link_header( 'next', $next_link );
    	}

    	return $response;
    }
    ```

[View all references](https://developer.wordpress.org/reference/files/wp-includes/rest-api/endpoints/class-wp-rest-abilities-v1-list-controller.php/)
[View on Trac](https://core.trac.wordpress.org/browser/tags/6.9.4/src/wp-includes/rest-api/endpoints/class-wp-rest-abilities-v1-list-controller.php#L88)
[View on GitHub](https://github.com/WordPress/wordpress-develop/blob/6.9.4/src/wp-includes/rest-api/endpoints/class-wp-rest-abilities-v1-list-controller.php#L88-L149)

## 󠀁[Related](https://developer.wordpress.org/reference/classes/wp_rest_abilities_v1_list_controller/get_items/?output_format=md#related)󠁿

| Uses | Description | 
| [wp_get_abilities()](https://developer.wordpress.org/reference/functions/wp_get_abilities/)`wp-includes/abilities-api.php` |

Retrieves all registered abilities.

  | 
| [WP_REST_Abilities_V1_List_Controller::prepare_item_for_response()](https://developer.wordpress.org/reference/classes/wp_rest_abilities_v1_list_controller/prepare_item_for_response/)`wp-includes/rest-api/endpoints/class-wp-rest-abilities-v1-list-controller.php` |

Prepares an ability for response.

  | 
| [urlencode_deep()](https://developer.wordpress.org/reference/functions/urlencode_deep/)`wp-includes/formatting.php` |

Navigates through an array, object, or scalar, and encodes the values to be used in a URL.

  | 
| [rest_ensure_response()](https://developer.wordpress.org/reference/functions/rest_ensure_response/)`wp-includes/rest-api.php` |

Ensures a REST response is a response object (for consistency).

  | 
| [rest_url()](https://developer.wordpress.org/reference/functions/rest_url/)`wp-includes/rest-api.php` |

Retrieves the URL to a REST endpoint.

  | 
| [add_query_arg()](https://developer.wordpress.org/reference/functions/add_query_arg/)`wp-includes/functions.php` |

Retrieves a modified URL query string.

  |

[Show 3 more](https://developer.wordpress.org/reference/classes/wp_rest_abilities_v1_list_controller/get_items/?output_format=md#)
[Show less](https://developer.wordpress.org/reference/classes/wp_rest_abilities_v1_list_controller/get_items/?output_format=md#)

## 󠀁[Changelog](https://developer.wordpress.org/reference/classes/wp_rest_abilities_v1_list_controller/get_items/?output_format=md#changelog)󠁿

| Version | Description | 
| [6.9.0](https://developer.wordpress.org/reference/since/6.9.0/) | Introduced. |

## User Contributed Notes

You must [log in](https://login.wordpress.org/?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Fclasses%2Fwp_rest_abilities_v1_list_controller%2Fget_items%2F)
before being able to contribute a note or feedback.