Midwest Burners : Rebuilding the Hub for a Five-Site Network

The Problem
Midwest Burners Association, a Midwest regional Burning Man nonprofit, was running its annual event on the default WordPress theme, year after year, with no real information architecture behind it. Content was added as plain text with no formatting, no visual hierarchy, and no consistent structure. Navigation had grown organically (and chaotically) as new events, reports, and pages got bolted on wherever they'd fit.

The organization runs four distinct annual events (Interfuse, Hearths of Phyre, Hullabalu, and This Event Is Cancelled), each with its own identity, audience, and content needs, plus organizational content like bylaws, financials, and board info that had nothing to do with any single event. All of it lived on one undifferentiated site. Non-technical volunteer staff were the ones updating content between events, and the existing setup gave them no guardrails: no templates, no content types, just an open text editor and good intentions.

The result was a site that looked and felt disorganized because, structurally, it was.
The Approach: One Site Becomes Five
Before any design work started, the core decision was architectural: split a single flat WordPress site into a multisite network, an org-level parent site plus four event subsites, each with room to develop its own visual identity while sharing structural scaffolding underneath.
This meant the org site couldn't just be "the homepage." It had to function as:
The organizational hub (bylaws, board, financials, history, FAQ)
The connective tissue linking out to four independently-designed event subsites
The proof of concept for the shared theme architecture the subsites would build on
I owned this decision end to end: the multisite setup, the site structure and page architecture, the design system, the color story, the ACF field architecture, and the initial build. This case study focuses on the org site itself, but the multisite split is the foundation everything else sits on.
Design
The old site didn't really have a design, it had defaults. So the direction wasn't "improve the existing look," it was "decide what this organization should feel like online."
I landed on neo-brutalist: bold, high-contrast, structural. A few reasons this fit specifically:
It's organized by nature. Hard borders, deliberate grids, and offset shadows create visual hierarchy almost automatically, which was exactly what the old plain-text pages lacked.
It's playful without being cutesy. This is a festival organization, the design needed personality, but the org site also needed to read as credible (bylaws, financials, board documents live here too). Neo-brutalism let me be bold and structured at the same time.
It gave the four event subsites room to breathe. Because the org site's identity is intentionally graphic and typographic rather than illustrative, it doesn't compete with Interfuse's cyberpunk aesthetic or Hullabalu's vintage-Halloween palette. It reads as the "parent," not another sibling.
Typography: Bebas Neue for display headlines, Space Grotesk for body and UI text, JetBrains Mono for accents and metadata. The pairing gives the loud/quiet contrast neo-brutalism depends on: condensed impact up top, clean readable text underneath, monospace for anything that should feel like a label or a system detail.
Color & cards: A four-tier SCSS token architecture underpins the whole system (base palette, semantic tokens, component tokens, and utility tokens), which keeps the org site's colors consistent without hardcoding hex values anywhere in the templates. On top of that sits a $cycle-1 through $cycle-4 alternating card color system, so repeating content (announcements, linked posts, board members) gets automatic visual rhythm instead of looking like a monotonous list.
Structural signature: hard offset box shadows and thick borders on cards and buttons, with bold hover transforms (shifts, not fades) that reinforce the tactile, physical feel of the brutalist direction.
Technical Solutions
The build leans heavily on custom PHP rather than out-of-the-box GenerateBlocks loops or ACF's default output. GenerateBlocks' free tier doesn't reliably update $post/get_the_ID() per loop iteration, so anywhere content needed to be queried, sorted, or grouped, I wrote a dedicated PHP shortcode instead of fighting the block editor.
WordPress Multisite architecture
Split a single-site WordPress install into a network with one org-level parent and four event subsites, establishing the shared theme, plugin, and content foundation the rest of the network builds on.
frost-mwbcustom FSE child themeBuilt the shared theme scaffolding used across the network, with the org site as the first fully-built implementation, proving out the token architecture and block patterns before the subsites diverged into their own identities.
Custom PHP shortcode library
Built a full set of purpose-written shortcodes to replace block-based query loops entirely: board member archives, bylaws rendering, meeting minutes, FAQ, organizational timeline, and Ten Principles cards each have their own PHP-driven query, sort, and output logic rather than relying on GenerateBlocks or ACF's default markup.
Nested ACF repeater rendering for Bylaws
The bylaws page uses nested
have_rows()/the_row()loops to render Articles containing Sections, with article and section numbers generated in PHP rather than typed manually into content, so renumbering never breaks when a section is added or removed.Custom taxonomy synced from an ACF field
Registered a non-public
mm-yeartaxonomy for meeting minutes that mirrors the year portion of an ACF date field. It's kept in sync automatically via anacf/update_valuefilter on save, so minutes can be archived and grouped by year without staff having to manually select a year and risk getting it wrong.Board term history logic
Board members can hold multiple terms and roles over time, stored as ACF repeater rows. PHP logic expands each term's active year range, buckets members by year, and correctly handles a "currently active" toggle so terms don't need to be manually closed out year to year. Powers a collapsible "board by year" archive.
Shared sidebar archive component
One reusable shortcode (
sidebar_archive) powers year-based archive navigation for both the board and meeting minutes sections, since they're structurally the same UI pattern under different content types.Default featured image assignment
Hooked into
wp_after_insert_postto auto-assign a placeholder headshot to new board bio posts, so pages never render with a broken image before a photo is uploaded.Multisite-aware enqueueing and body classes
functions.phpadds site ID, name, and domain classes to the body tag and conditionally enqueues site-specific stylesheets by blog ID, so the sharedfrost-mwbtheme can serve differentiated styling per subsite without duplicating the theme itself.Shortcode-in-FSE compatibility layer
FSE's block editor and
wpautopdon't play well with shortcodes by default, stray<p>tags break markup and shortcodes can silently fail to execute inside reusable blocks. Wrote customrender_blockandthe_contentfilters to strip artifact paragraph tags and guarantee shortcodes render cleanly everywhere they're used.Auto-registered block pattern library
functions.phpscans a/patternsdirectory on init and registers each file's block pattern straight from its file header (title, slug, categories), so adding a new pattern is a matter of dropping in a file rather than manually registering it in code.Four-tier SCSS token system
Structured color and design tokens into base, semantic, component, and utility layers so the neo-brutalist system stays consistent and themeable without duplicating values across files.
$cycle-1–$cycle-4card color systemBuilt an alternating color assignment pattern for repeating card-based content, giving visual rhythm to lists (announcements, linked content) without manual color assignment per item.
Site structure & information architecture
Rebuilt the full page hierarchy and navigation structure from scratch, replacing the ad hoc menu growth of the old site with an intentional map connecting org-level content to the four event subsites.
Tech Used
WordPress Multisite for the network architecture
Full Site Editing (FSE) with a custom
frost-mwbchild themeCustom PHP (shortcodes, hooks, custom taxonomies,
render_block/the_contentfilters) as the primary logic layer for querying and displaying contentACF for structured, non-technical-friendly content fields
GenerateBlocks (free tier) for block-based layout components
SCSS (multi-tier token architecture) for the design system
Kinsta for hosting and staging
Local by Flywheel for local development
GitHub Actions for deployment
Lessons Learned & Refactor Ahead
The org site was the first site built in this network, and it shows. Working through Interfuse afterward taught me better patterns, more consistent shortcode structure, cleaner BEM naming, smarter ACF field grouping, and a more deliberate approach to reusable components, and a fair amount of what's on the org site predates that learning curve.
Bringing the whole network into alignment means going back through the org site with that hindsight, on both the PHP and the styles side, so all five sites hold together as one coherent system instead of five sites at different maturity levels.
What's Left
Refactor early PHP shortcodes to match patterns developed later on Interfuse (consistent structure, naming, and query handling)
Refactor SCSS/BEM naming inconsistencies left over from before the token system matured
Implement how afterburn reports are added and displayed
Build a system for displaying financial information per year (budget spreadsheets/data)
Add a favicon
Finalize headline sizing and spacing across breakpoints
Finalize link styles (states, hover treatment, in-content vs. nav)
Design and build the footer
Design and organize the contact page (both visual style and content structure)