Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
01cff2f
feat(abilities-api): Introduce WP_Abilities_Query class
galatanovidiu Oct 14, 2025
46d4711
feat(abilities-api): Add filtering capabilities to wp_get_abilities
galatanovidiu Oct 14, 2025
3ebeb37
test(abilities-api): Add unit tests for WP_Abilities_Query
galatanovidiu Oct 14, 2025
45d3917
docs(abilities-api): Add documentation for querying and filtering abi…
galatanovidiu Oct 14, 2025
f114dae
Refactor `WP_Abilities_Query` for compatibility
galatanovidiu Oct 14, 2025
c89f085
Remove redundant empty args check in wp_get_abilities()
galatanovidiu Oct 14, 2025
2ca7dae
Clarifies array type annotations in documentation
galatanovidiu Oct 14, 2025
68fea1b
Rename validation methods to sanitization methods
galatanovidiu Oct 14, 2025
de10fa7
Clarifies abilities retrieval and filtering doc
galatanovidiu Oct 14, 2025
74c0990
Enforces non-negative offset and valid limit in pagination
galatanovidiu Oct 14, 2025
844dddb
Refactor sanitize_pagination_args to use early exit pattern
galatanovidiu Oct 14, 2025
937c778
Merge branch 'trunk' into feature/filter-registered-abilities
galatanovidiu Oct 14, 2025
7439cb2
feat(abilities): Introduce WP_Abilities_Collection class
galatanovidiu Oct 15, 2025
c81b0ba
refactor(abilities): Update wp_get_abilities to return a collection
galatanovidiu Oct 15, 2025
792abaa
refactor(internal): Update consumers to use WP_Abilities_Collection API
galatanovidiu Oct 15, 2025
b26e4ba
docs(abilities): Document the new WP_Abilities_Collection API
galatanovidiu Oct 15, 2025
3a65eca
Enhance collection pluck() with dot notation support
galatanovidiu Oct 15, 2025
b7e0f11
Docs: Clarify filtering and retrieval method usage
galatanovidiu Oct 15, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 49 additions & 6 deletions docs/4.using-abilities.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,27 +35,70 @@ if ( $site_info_ability ) {

## Getting All Registered Abilities (`wp_get_abilities`)

To get an array of all registered abilities:
`wp_get_abilities()` returns a `WP_Abilities_Collection` instance, which provides a fluent, chainable API for filtering and sorting:

```php
/**
* Retrieves all registered abilities using Abilities API.
* Retrieves a collection of registered abilities.
*
* @return WP_Ability[] The array of registered abilities.
* Returns a WP_Abilities_Collection instance that provides a fluent, chainable
* API for filtering, sorting, and manipulating abilities.
*
* @since n.e.x.t Returns WP_Abilities_Collection instead of array.
* @return WP_Abilities_Collection Collection of WP_Ability instances.
*/
function wp_get_abilities(): array
function wp_get_abilities(): WP_Abilities_Collection

// Example: Get all registered abilities
$all_abilities = wp_get_abilities();
$abilities = wp_get_abilities();

foreach ( $all_abilities as $name => $ability ) {
// Iterate over the collection
foreach ( $abilities as $ability ) {
echo 'Ability Name: ' . esc_html( $ability->get_name() ) . "\n";
echo 'Label: ' . esc_html( $ability->get_label() ) . "\n";
echo 'Description: ' . esc_html( $ability->get_description() ) . "\n";
echo "---\n";
}

// Or convert to array if needed
$abilities_array = $abilities->to_array();
```

### Filtering Abilities

The collection returned by `wp_get_abilities()` provides chainable methods for filtering and sorting. For detailed filtering documentation, see [Advanced Filtering and Sorting](8.advanced-filtering-and-sorting.md).

Quick examples:

```php
// Filter by category
$abilities = wp_get_abilities()->where_category( 'data-retrieval' );

// Search for abilities
$abilities = wp_get_abilities()->search( 'email' );

// Filter by namespace and meta
$abilities = wp_get_abilities()
->where_namespace( 'my-plugin' )
->where( 'meta.show_in_rest', true );

// Chain multiple filters
$abilities = wp_get_abilities()
->where_category( array( 'communication', 'data-retrieval' ) )
->where_namespace( 'my-plugin' )
->where( 'meta.show_in_rest', true )
->search( 'email' )
->sort_by( 'label' )
->all(); // Convert to array

// Get count without converting to array
$count = wp_get_abilities()
->where_category( 'math' )
->count();
```

See [Advanced Filtering and Sorting](8.advanced-filtering-and-sorting.md) for complete filtering documentation, including nested meta filters, comparison operators, and custom callbacks.

## Executing an Ability (`$ability->execute()`)

Once you have a `WP_Ability` object (usually from `wp_get_ability`), you execute it using the `execute()` method.
Expand Down
Loading