Mantle defines its own capabilities rather than reusing manage_options, so a client administrator can be given a narrower slice of the plugin than a Linchpin engineer. Capabilities are grouped, assigned to roles by default, and synchronised into WordPress roles on demand.
Every label, description, group, and role list below was read from a running installation, not from the source definitions — see How the list is assembled for why those can differ.
The power_admin role
Mantle introduces a power_admin role that holds every Mantle capability. administrator receives a read-mostly subset, and a few cache-clearing capabilities extend to editor and shop_manager. The intent is that Linchpin staff hold power_admin while the client's own administrators keep administrator.
Core capabilities
Defined in Mantle\Model\Users\Capabilities::get_core_capabilities() and not owned by any module.
Core capabilities
mantle_core_capabilities. The default column lists the roles granted the capability.-
mantle_manage_optionsstring -
Manage Mantle Options. Allows users to manage and edit Mantle plugin settings and options. Group: manage.
-
mantle_view_optionsstring -
View Mantle Options. Allows users to view Mantle plugin settings and options. Group: view.
-
mantle_manage_usersstring -
Manage Mantle Users. Allows users to manage Mantle user capabilities and view capability sync status. Group: manage.
-
mantle_remote_registerstring -
Remote Register. Core describes this as registering the plugin and authenticating during initial setup, but the
dashboardmodule redefines the key and its description wins at runtime. Group: manage.
No fields match this filter.
Module capabilities
Contributed by modules via register_capabilities().
Dashboard module
dashboard module, which is type core and always enabled. The first two gate the built-in admin tabs through the requiredCapability property in src/constants/routes.js.-
mantle_edit_settingsstring -
Manage Settings. Manage general Mantle settings. Group: manage. Gates the Settings tab.
-
mantle_view_dashboardstring -
View Dashboard. Access to the Mantle dashboard. Group: view. Gates the Dashboard tab.
-
mantle_remote_registerstring -
Remote Register. Ability to remotely register mantle on behalf of the client. Group: manage. Redefines the core capability of the same name, and this definition is the one that takes effect.
No fields match this filter.
Cache
convergence_cache module.-
mantle_edit_cachestring -
Edit Cache Settings. Ability to edit cache settings and configuration. Group: manage.
-
mantle_view_cachestring -
View Cache. Access to cache management section. Group: view.
-
mantle_clear_cache_allstring -
Clear Full Site Cache. Ability to clear the full site cache. Group: action.
-
mantle_clear_cache_edgestring -
Clear Edge Cache. Ability to clear the edge cache. Group: action.
-
mantle_clear_cache_objectstring -
Clear Object Cache. Ability to clear the object cache. Group: action.
-
mantle_clear_cache_pagestring -
Clear Single Page Cache. Ability to clear a single page cache. Group: action.
No fields match this filter.
Monitoring
monitoring module. StatusCake is the backing service.-
mantle_view_monitoringstring -
View Monitoring. Access to monitoring/StatusCake section. Group: view.
-
mantle_view_monitoring_itemsstring -
Request StatusCake Items. Request items from StatusCake API. Group: monitoring.
-
mantle_edit_monitoring_itemsstring -
Edit StatusCake Items. Edit StatusCake monitoring items. Group: monitoring.
-
mantle_delete_monitoring_itemsstring -
Delete StatusCake Items. Delete StatusCake monitoring items. Group: monitoring.
No fields match this filter.
Communication and AI
communication and ai_chatbot modules.-
mantle_manage_communicationstring -
Manage Communication. Manage communication details and information. Group: manage.
-
mantle_view_communicationstring -
View Communication. View communication details and information. Group: view.
-
mantle_access_client_chatstring -
Access Client Chat. Access the client chat widget for team communication. Group: view.
-
mantle_access_slack_chatstring -
Access Slack Chat. Access the Slack chat widget for team communication. Group: view.
-
mantle_access_chatbotstring -
Access Chatbot. Access to the AI chatbot feature. Group: feature.
No fields match this filter.
Plugin sync and snippets
plugin_sync and site_code_snippets modules. The two highlighted below are the most privileged capabilities Mantle defines.-
mantle_execute_plugin_commandsstring -
Execute Plugin Commands. Execute remote plugin management commands. Group: manage. Drives the
/plugins/commandroutes. -
mantle_manage_site_code_snippetsstring -
Manage Site Code Snippets. Manage site code snippets. Group: manage. Permits arbitrary header, body, and footer script injection.
-
mantle_manage_plugin_syncstring -
Manage Plugin Sync. Manage plugin sync settings and view sync status. Group: manage.
-
mantle_view_plugin_action_logstring -
View Plugin Action Log. View audit log of plugin management actions. Group: view.
-
mantle_view_site_code_snippetsstring -
View Site Code Snippets. View site code snippets. Group: view.
No fields match this filter.
Clients, security, optimizations, users
client_info, security, optimizations, and user_management modules.-
mantle_manage_clientsstring -
Manage Clients. Manage client details and information. Group: manage.
-
mantle_manage_securitystring -
Manage Security. Manage security. Group: manage.
-
mantle_manage_optimizationsstring -
Manage Optimizations. Manage optimizations. Group: manage.
-
manage_mantle_usersstring -
Manage Users. Manage user roles and permissions. Group: manage. Note the reversed word order compared with the core
mantle_manage_users.
No fields match this filter.
How the list is assembled
get_all_capabilities() merges core capabilities with module capabilities through two complementary paths.
Capability collection
The loop inside get_all_capabilities() skips modules where is_enabled() returns false. Separately, each module registers a mantle_all_capabilities filter whose callback returns early when the module is enabled and adds its capabilities when it is not. The two paths are complementary, so the returned list covers all sixteen modules either way — which is why a reference installation with twelve modules disabled still reports thirty capabilities.
Two consequences follow from the merge order:
Enumerate capabilities on your own site
wp eval '$c = new \Mantle\Model\Users\Capabilities(); foreach ( $c->get_all_capabilities() as $k => $v ) { printf( "%-38s %-11s %s" . PHP_EOL, $k, $v["group"] ?? "-", implode( "|", $v["roles"] ?? [] ) ); }'manage_mantle_users manage power_admin
mantle_access_chatbot feature power_admin|administrator|editor
mantle_clear_cache_all action power_admin|administrator|editor|shop_manager
mantle_edit_settings manage power_admin
...
Synchronising and resetting
| Route | Methods | Effect |
|---|---|---|
/mantle/v1/capabilities | GET | Return capability metadata |
/mantle/v1/capabilities/check | GET | Report sync status |
/mantle/v1/capabilities/sync | POST | Write capabilities onto roles |
/mantle/v1/capabilities/reset | POST | Remove and re-apply defaults |
Sync state is tracked in two options: mantle_capabilities_last_synced records the capability set last written, and mantle_capabilities_version records the plugin version that wrote it.
Extending capabilities
add_filter( 'mantle_core_capabilities', function ( array $capabilities ): array { $capabilities['mantle_view_reports'] = [ 'label' => __( 'View Reports', 'my-plugin' ), 'description' => __( 'Allows users to view the reports tab', 'my-plugin' ), 'group' => 'view', 'roles' => [ 'power_admin', 'administrator' ], ]; return $capabilities; });
// Runs for the module whose ID is 'monitoring'.add_filter( 'mantle_module_monitoring_capabilities', function ( array $capabilities, string $module_id ): array { unset( $capabilities['mantle_delete_monitoring_items'] ); return $capabilities; }, 10, 2);
add_filter( 'mantle_all_capabilities', function ( array $capabilities ): array { // Also grant single-page cache clearing to authors. if ( isset( $capabilities['mantle_clear_cache_page'] ) ) { $capabilities['mantle_clear_cache_page']['roles'][] = 'author'; } return $capabilities; });
A capability definition needs four keys: label, description, group, and roles. After changing definitions, POST to /mantle/v1/capabilities/sync so the new set is written onto roles.