Config
The config/ directory holds all the settings a developer is likely to touch on a project. Each file is a plain PHP array — no classes, no side-effects, just data.
How it works
Section titled “How it works”When the theme boots, every config/*.php file is loaded into memory. After that, each provider runs its boot() method and reads whatever values it needs via Config::get().
config/theme.php ──▶ ThemeProvider::boot() ──▶ add_theme_support(), register_nav_menu(), …config/hooks.php ──▶ HooksProvider::boot() ──▶ instantiates and registers Hook classesconfig/assets.php ──▶ AssetsProvider::boot() ──▶ registers Vite entrypoints, extra scripts, ……Providers are the only place that calls WordPress functions — config files never do.
Reading config values
Section titled “Reading config values”Use Config::get() with dot notation anywhere in the theme:
$support = Config::getInstance()->get('theme.support');$sizes = Config::getInstance()->get('images.sizes');The first segment is the filename (without .php), the rest traverse the array.
Config files
Section titled “Config files”The following config files are available out of the box. Follow the links for a full reference of each option.
| File | Description |
|---|---|
| acf.php | ACF options pages |
| ajax.php | AJAX action registration |
| assets.php | Vite entrypoints, extra scripts and styles |
| cache.php | Caching settings |
| custom-post-types.php | Custom post type definitions |
| custom-taxonomies.php | Custom taxonomy definitions |
| hooks.php | Hook class registration |
| i18n.php | Internationalisation strategy |
| images.php | Image sizes and crop settings |
| rest-api.php | REST API route registration |
| theme.php | Theme support, nav menus, sidebars |
| timber.php | Timber / Twig settings |

