Mantle is designed to be extended through filters rather than modified. This page lists the actions and filters that make up the plugin's extension surface, verified by reading do_action() and apply_filters() calls in the source.
Actions
Actions
-
mantle_register_modulestring -
The registration point for modules. Receives the loader class name. Hook this and call
Module_Loader::register(). Re-fires when a module’s enabled state changes. -
mantle_modules_initializedstring -
Fires after all modules are initialised. Receives the array of module instances.
-
mantle_activatedstring -
Fires once on the first admin request after activation, at
initpriority 99. Use this for one-time setup work. -
mantle_donestring -
Fires at the end of
Bootstrap::run(), once controllers are registered and CLI commands are loaded.
No fields match this filter.
Filters
Modules
Module filters
-
mantle_core_modulesarray -
Modify the registered module array before initialisation. Applied at the end of
register_core_modules().
No fields match this filter.
Settings
Settings filters
-
mantle_settings_schemaarray -
The schema assembly point. Every module hooks this through
Abstract_Module::register_settings_filter()at priority 10. -
mantle_default_settingsarray -
Filter the defaults generated from the main settings schema.
-
mantle_default_setup_settingsarray -
Filter the defaults generated from the setup schema.
No fields match this filter.
Capabilities
Capability filters
-
mantle_core_capabilitiesarray -
Modify the core capability definitions before they are merged with module capabilities.
-
mantle_all_capabilitiesarray -
Modify the fully merged capability set. Modules also use this to contribute their own capabilities when disabled.
-
mantle_module_{module_id}_capabilitiesarray -
Modify one module’s capabilities. Receives the capability array and the module ID. Substitute the module ID, for example
mantle_module_monitoring_capabilities.
No fields match this filter.
JavaScript filters
The admin interface uses @wordpress/hooks, so these are applied in the browser rather than in PHP.
JavaScript filters
applyFilters() from @wordpress/hooks.-
mantle.navigation_tabsarray -
Add, remove, or modify top-level admin navigation tabs. Applied in
getTabs()insrc/constants/routes.js. Receives and must return an array of tab objects. -
mantle.settings_tabsarray -
Add subtabs inside the Settings view. Applied in
src/modules/Settings/index.js. Receives the tabs array plus a second argument of{ settings, modules }. Each tab needsname,title,priority, andclassName.
No fields match this filter.
import { addFilter } from '@wordpress/hooks';import { __ } from '@wordpress/i18n';import Reports from './Reports';const slug = 'reports';addFilter( 'mantle.navigation_tabs', `mantle/${ slug }`, ( tabs ) => { if ( tabs.some( ( tab ) => tab.id === slug ) ) { return tabs; } return [ ...tabs, { id: slug, path: `/${ slug }`, title: __( 'Reports', 'mantle' ), component: Reports, order: 60, requiredCapability: 'mantle_view_reports', }, ];} );
-
Line 9Recommended addition. The bundled modules omit this and append unconditionally.
-
Line 21
requiredCapabilityhides the tab from users who lack it.
The bundled modules in src/modules/*/register.js append unconditionally with return [ ...tabs, newTab ];. The guard above is a defensive addition, not something core does.
Module-specific hooks
Individual modules define further hooks in their own namespaces. These are the prefixes to search for:
| Prefix | Module |
|---|---|
mantle_convergence_cache_* | Convergence Cache |
mantle_maintenance_*, mantle_before_maintenance_mode | Maintenance |
mantle_plugin_sync_*, mantle_theme_sync_*, mantle_sync_plugins | Plugin Sync |
mantle_sso_*, mantle_allow_sso | SSO |
mantle_chat_*, mantle_save_chat_preferences | Communication |
mantle_allowed_redirect_hosts | Security |
mantle_linchpin_license_catalog | Linchpin Licenses |
mantle_dismiss_welcome_notice | Welcome |
rg -o "(?:do_action|apply_filters)\(\s*'([^']+)'" -r '$1' includes/ --no-filename | sort -uemoji_svg_url
login_redirect
mantle_action_
mantle_activated
mantle_admin_data
mantle_admin_preload_paths
mantle_admin_strings
mantle_ai_chatbot_max_tokens
mantle_all_capabilities
mantle_allowed_waf_providers
mantle_core_capabilities
mantle_core_modules
mantle_done
mantle_hosting_providers
mantle_modules_initialized
mantle_power_admin_capabilities
mantle_register_module
...
The list includes WordPress core hooks that Mantle filters, such as emoji_svg_url and login_redirect, alongside its own. It also surfaces hooks not documented above — mantle_admin_data, mantle_admin_preload_paths, mantle_admin_strings, mantle_power_admin_capabilities, mantle_hosting_providers, and mantle_allowed_waf_providers among them — plus roughly twenty mantle_ai_* filters that tune AI behaviour. Treat the enumeration as authoritative over this page.
See also
- Creating a module — the module contract in full.
- SlotFills — injecting React UI rather than filtering data.