Services
Services are the public, task-focused way to use the PHP framework. Every service page follows the same pattern: overview, method reference, accepted identifiers, example, developer notes, and behavior details. Pass an access level to choose whose settings you read or write.
The access level is the subject. A resource identifier is the target passed to a method such as deny(). For example, in AAM::api()->posts('role:subscriber')->deny(34, 'read'), role:subscriber selects whose rule to store and 34 selects the post. See Access levels for subject formats. Each service page lists the target forms its methods accept; redirect, settings, and JWT services use configuration values or tokens instead of resource identifiers.
An effective decision is the result after AAM considers the level’s own rule and inherited rules. When you call is_denied() or a similar method, that is the decision you get. A failed call can return WP_Error when you set error_handling to wp_error; check it before using the result.
$service = AAM::api()->urls('role:subscriber');
$service->deny('/members/*');
This stores a URL denial for Subscribers. Use the URLs service to check a requested URL or attach a redirect.
Access decisions
| Resource | Service |
|---|---|
| Content | Posts, terms, post types, taxonomies |
| Routes and URLs | URLs, API routes |
| WordPress UI | Backend menu, admin toolbar, metaboxes, widgets |
| Identity | Capabilities, users, roles |
| Platform APIs | Abilities, MCP servers, MCP tools, MCP prompts, MCP resources |
Configuration and workflows
| Task | Service |
|---|---|
| Redirects | Login, logout, not found, access denied |
| Rules and settings | Policies, settings, hooks |
| Tokens | JWTs |
The core plugin registers every service above. Some methods on terms, taxonomies, and post types require the premium add-on; those methods are marked on their pages.