Summary
Grouped reference for the scoped app-settings read / write filters. Each follows the same pattern as mam_app_settings_get_setting — one filter per scope. Use these when you need a typed read of a specific settings family rather than the generic key-by-key cascade.
Read filters
| Filter |
Returns |
Notes |
mam_app_settings_get_layout_settings |
array |
Home-screen layout configuration |
mam_app_settings_get_home_screen_stack |
array |
Ordered stack of home-screen sections |
mam_app_settings_get_home_screen_categories |
array |
Home-screen category list |
mam_app_settings_get_content_section_settings |
array |
Per-button content-section config |
mam_app_settings_get_tab_bar_settings |
array |
Tab-bar config (see Hook: mam_app_settings_get_tab_bar_settings) |
mam_app_settings_get_tab_bar_buttons |
array |
Tab-bar button menu (admin UI source) |
mam_app_settings_get_add_item_settings |
array |
Add-new-item flow settings |
mam_app_settings_get_default_sections |
array |
Default content sections per role |
mam_app_settings_get_form_colors |
array |
Form theme colors |
Generic read signature:
$value = apply_filters(
$filter_name,
$default,
string $role
);
Write filters
| Filter |
Mirror of |
Notes |
mam_app_settings_set_layout_settings |
..._get_layout_settings |
|
mam_app_settings_set_home_screen_stack |
..._get_home_screen_stack |
|
mam_app_settings_set_home_screen_categories |
..._get_home_screen_categories |
|
mam_app_settings_set_content_section_settings |
..._get_content_section_settings |
|
mam_app_settings_set_tab_bar_settings |
..._get_tab_bar_settings |
|
mam_app_settings_set_add_item_settings |
..._get_add_item_settings |
|
mam_app_settings_set_form_colors |
..._get_form_colors |
|
mam_app_settings_set_button |
..._get_buttons |
per-button write |
mam_app_settings_button_order |
(no read mirror) |
reorder buttons in an array |
mam_app_settings_delete_button |
(no read mirror) |
delete a button |
Admin UI extension hooks
| Hook |
Type |
Role |
mam_add_settings_to_main |
Filter |
Inject settings into the main admin page |
mam_add_settings_categories_to_main |
Filter |
Inject settings categories |
mam_add_settings_to_buttons_settings |
Filter |
Per-button-type settings panel injection |
mam_app_nav_above_role_dropdown |
Filter |
Render content above the admin role dropdown |
mam_app_settings_final_content_sections_tabs |
Filter |
Last-chance tab-list mutation |
mam_for_plugin_settings_section |
Filter |
Per-plugin settings section in the admin |
mam_publish_additional_settings |
Filter |
Inject settings into the Publish admin page |
Example: read the layout for the active role
$layout = apply_filters(
'mam_app_settings_get_layout_settings',
array(),
mam_current_request()->user_role()
);
add_filter( 'mam_app_settings_get_form_colors', function ( $colors, $role ) {
if ( $role === 'subscriber' ) {
$colors['primary'] = '#FF5722';
}
return $colors;
}, 10, 2 );
Gotchas
- All hot path. Same caveats as
mam_app_settings_get_setting — early-return when not applicable, cache aggressively.
- Per-scope option keys. Each filter resolves to a different option key; don’t try to construct keys yourself.
- The cascade is in the data manager. Don’t try to re-implement.
- Frozen contracts. Many call sites depend on the existing signatures and cascade behavior.
Related articles
- Settings cascade overview
- Per-button and per-role settings
- Hook: mam_app_settings_get_setting
- Hook: mam_app_settings_get_buttons
- Hook: mam_app_settings_get_tab_bar_settings
| Field |
Value |
| Article type |
Hook Reference |
| Plugin slug |
mam-main |
| Applies to plugin version |
2.1.11+ |
| Hook type |
filter |
| Audience |
PHP developer |
| Frozen contract |
yes |
| Last verified |
2026-05-02 |