Skip to Content
Balinot ThemeAdmin panel and settings

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:

  1. Add a default value to balinot_theme_default_site_options() in setup/includes/theme-options.php.
  2. Normalize it inside balinot_theme_normalize_site_options().
  3. Add the admin field to setup/admin/site-options-page.php.
  4. Read it through balinot_theme_option_group().

If you need a new operational panel setting outside Site:

  1. Add or extend the correct branch in balinot_theme_default_settings() in setup/includes/theme-options.php.
  2. Normalize and sanitize it in the matching save section in setup/admin/admin-page.php.
  3. Render the field in the right Balinot admin page.
  4. Read it through balinot_theme_setting().

If you need a new editorial section field:

  1. Add or update the ACF field group.
  2. Read it from the owning template or partial with get_field().
  3. Keep the field close to the section that actually uses it.
Last updated on