The brief
Some operations run many brands in the same vertical — distinct identities, distinct local audiences, but a common parent that wants operational and visual coherence across the network without locking each brand into the same template. The framework I worked on solves that problem as a WordPress Multisite system: a parent theme, a set of supporting plugins, and a rigorously role-scoped admin interface that lets a small parent-company team economize branding decisions across the network while leaving each individual site’s manager with a focused, safe surface area to run their own site.
The constraints that mattered: a non-technical site manager has to be able to shape their site’s identity (colors, fonts, hero treatments, button styles) without breaking it; a network-level manager has to clone, configure, and onboard a new site without touching code; every site has to land WCAG AA and stay performant.
I was a primary contributing developer on the initial build-out and the lead developer on the framework after launch. I didn’t do everything; the pieces below are the ones I owned.
What I built
A site-level variable system as the design contract. Brand colors,
typography, spacing tokens, and rounded-corner styles are exposed
through a structured admin surface (ACF-backed) and rendered at
runtime as CSS custom properties on :root. Components consume the
variables, not hard-coded values. A site manager picking a new primary
color in the admin shifts every CTA, every link state, and every
accent on the site at once — without a developer in the loop.
Dynamic backgrounds with section-aware coupling. Sections expose a background system covering color, image, video, gradient, and custom-shape variants. The interesting piece is the coupling: when two adjacent sections share the same background, the framework detects it during render and collapses the vertical padding between them automatically — an editor stacking sections gets a single visual block instead of an awkward double-padded gap. Detection happens in PHP at render time, comparing the current section’s background against a tracked previous-section reference.
A custom site cloner. Network-level managers spin up new sites by cloning an existing site rather than configuring from scratch — theme files, options, content, media, and user mappings all duplicate, with URL and domain rewriting handled cleanly so the new site is usable the moment the cloner finishes.
Dynamic buttons. A button system that emits CSS custom properties per preset (color, size, style, variant), cached as transients and invalidated on settings change. Editors get a fixed set of buttons that stay brand-coherent; developers get a single source of truth for how a button is allowed to look on any site in the network.
Contributing pieces I had a hand in. Color-aware sections that pair each brand color with a text-color flag so contrast holds wherever the color is used. Custom user and role management distinguishing network manager (cross-site authority) from site manager (their site only) from standard editor — each role gets a trimmed-down admin interface that hides what they don’t need and disables what they shouldn’t be touching. A services display system with a card-vs-whole rendering toggle. Dynamic menu registration per theme location. A landing-page post type with its own templated header and footer for marketing pages outside the main site hierarchy.
What’s notable about it
Two things stand out. First, the performance and WCAG AA bar held across the network: image sizing, transient-backed dynamic-CSS caching, and the contrast discipline baked into the brand-color schema all ship by default, so new sites inherit the floor without extra work. Second, the role-scoped admin interfaces. A site manager logging in sees a focused dashboard for running their site — not a thousand-option admin built for a WordPress superuser. The framework makes it harder to do the wrong thing and easier to do the right one, which is what scales an operation past a few brands without scaling the support burden linearly with it.