Admin Panel And Settings
The theme has three admin surfaces that work together.
Balintot main panel:
- Entry file: wp-content/themes/balinot/setup/admin/admin-page.php
- Registered from: wp-content/themes/balinot/setup/balinot-setup.php
- Purpose: operational configuration, module toggles, Woo settings, email settings, performance tools, docs, and helper screens.
Native Site screen:
- Admin page: Balinot > Site
- File: wp-content/themes/balinot/setup/admin/site-options-page.php
- Storage: balinot_theme_settings[site_options]
- Purpose: simple global site content such as logos, company data, contact data, socials, FAQ layout, review layout, and help block content.
Legacy ACF options pages:
- Slugs: theme-options, theme-options-top-banner, theme-options-product-detail, theme-options-error-404
- Purpose: advanced editorial global content that still belongs in ACF.
Main settings storage:
- Option name: balinot_theme_settings
- Common branches: branding, site_options, content, performance, forms, woo, email
- Read through helpers from setup/includes/theme-options.php instead of raw get_option calls.
Preferred read APIs:
- balinot_theme_setting(‘path.to.value’, $default)
- balinot_theme_option_group(‘group_name’, [])
- balinot_module_enabled(‘module-id’)
Save flow:
- Forms from the Balinot admin panel post to admin-post.php.
- The main action is balinot_save_theme_options.
- The save handler lives in setup/admin/admin-page.php.
- The section field decides which branch of balinot_theme_settings is normalized and saved.
Important implementation rule:
- The setup manifest controls whether a setup module boots.
- The admin panel grouping inside setup/admin/admin-page.php controls where that module appears in the UI.
- A module can exist in the manifest and still be missing from the visible admin grouping if you do not add it there.
Use native settings for:
- logos
- company data
- contact data
- social links
- FAQ global layout and intro text
- review global layout and archive CTA
- help block content
Use ACF for:
- page section field groups such as hero_section and related_section
- FAQ and review relationships
- legacy advanced options pages still edited through ACF UI
Examples already in the theme:
- Header reads logos, socials, and contact groups.
- Footer reads logos, socials, and contact groups.
- Generic FAQ and review routers read faqs_settings and reviews_settings.
If you need a new global simple setting:
- Add a default value to balinot_theme_default_site_options() in setup/includes/theme-options.php.
- Normalize it inside balinot_theme_normalize_site_options().
- Add the admin field to setup/admin/site-options-page.php.
- Read it through balinot_theme_option_group().
If you need a new operational panel setting outside Site:
- Add or extend the correct branch in balinot_theme_default_settings() in setup/includes/theme-options.php.
- Normalize and sanitize it in the matching save section in setup/admin/admin-page.php.
- Render the field in the right Balinot admin page.
- Read it through balinot_theme_setting().
If you need a new editorial section field:
- Add or update the ACF field group.
- Read it from the owning template or partial with get_field().
- Keep the field close to the section that actually uses it.
Last updated on