matthummel theme — settings reference
Every setting the theme exposes, where to find it, and what it does. The theme is built on Sage 11 / Acorn; all options write WordPress theme mods (or options, where noted) and render with no build step.
Two places hold settings:
- Customize → Theme Options — the live, preview-as-you-edit panel.
- Appearance → Pressroot — one consolidated settings page (Setup wizard, AI Models, Theme Settings, Site Types, GitHub, Support) for everything that isn’t a live visual preview, plus Appearance → Local Fonts, which stayed separate. New installs land on the Setup tab — a six-step guided wizard (see SETUP-WIZARD.md).
Customizer → Theme Options
Colors
- Brand / buttons — primary green used for buttons, links, accents (
--color-green). - Page background — site background (
--color-khaki). - Headings — heading text color (
--color-ink). - Body text — body copy color (
--color-body).
Typography
- Heading font / Body font — pick from Geist, Bricolage Grotesque, Schibsted Grotesk, Space Grotesk, Sora, Inter Tight, Fraunces, Inter, Work Sans, or System.
- Base font size — root body size (15–19px).
- Body line height — 1.5 to 2.0.
- Heading line height — 1.0 to 1.3.
- Heading letter spacing — tighter → wide.
Typography (advanced)
- Navigation font / Button font — assign different families to the nav and buttons (loads only when set).
- Heading / Body / Nav / Button weight — per-element font weights.
- Nav letter case — normal / UPPERCASE / lowercase.
- Body letter spacing — tight / normal / loose.
- Base font on tablet / mobile — responsive overrides at ≤1024px and ≤600px.
Extras
- Underline content links — underline links inside post/page content.
- Button corner radius — square → pill.
- Card corner radius — 6–20px.
- Text selection color —
::selectionbackground. - Scroll-to-top button — floating back-to-top control.
Layout
- Default content width — global content max-width (standard presets).
- Per type (Pages / Posts / Projects / Archives) — width preset, custom width, and show-sidebar toggle for each content type.
Header Layout
- Full-width menu — stretch the nav across the header.
- Header width / height / gap — sizing of the header row.
- Element position — order of logo, menu, social links, and button.
- Header button — show/hide, text, and URL of the header CTA.
- Sticky header — pin the header on scroll.
- Shrink on scroll — reduce header padding once scrolled (needs sticky).
- Transparent overlay header — off / front page only / all pages.
Top Bar
- Enable top bar, contact text, show social links, button text/URL, background and text color (palette).
Navigation
- Full flexbox control of the primary menu: direction, justify, align, align-content, wrap, gap.
- Menu item box/type: padding, min-height, font-size, weight, transform, letter-spacing, radius, color, hover color.
Menu & Popout
- Use menu icon on desktop / tablet / mobile — where the hamburger replaces the inline nav.
- Panel background — solid or gradient (start, end, angle), text / icon color.
- Popout width, menu columns and block columns (desktop), plus popout item styling (align, padding, font, weight, transform, gap).
Social Icons
- Show social icons in navigation bar + position (left / center / right).
- Display (text or icons), size, shape, color, chip background, hover color.
- Social URLs — LinkedIn, GitHub, Dev.to, X, Bluesky, YouTube, Instagram, Facebook, Mastodon, Email, RSS (each shows its Blade icon).
Announcement Bar
- Show bar, message, link text/URL, background/text color, dismissible (remembered per visitor), hide on mobile, and optional start/end dates for scheduling.
Hero
- Copy — editable eyebrow, H1 title, and sub-paragraph (clear a field to hide that element).
- Layout — columns (1–3: content + side image + 2nd image), content position (horizontal & vertical), content max-width + spacing, with tablet/mobile max-width overrides.
- Flexbox (advanced) — direction, justify, align, wrap, gap on the hero container.
- Media — side image / illustration (+ 2nd for 3-column), image side, or a background cover image with overlay % and min-height.
- Image finder (per image control) — search Openverse (no key), Unsplash/Pexels (optional keys → fields in this section), or generate a free AI image; the pick is imported to the Media Library and set.
- Entrance animation — fade-up/in, zoom, pop, blur, slide.
Animations
- Enable on-scroll animations (site-wide), effect (fade-up/in, zoom, pop, blur, slide), and speed (fast/normal/slow). Honours
prefers-reduced-motion.
Responsive (mobile & tablet)
- Hide on mobile/tablet — navigation social (mobile/desktop), top-bar social, top-bar button, navbar button (mobile + tablet), the “Menu” label, and shrink the logo on mobile.
- Keep top bar on one line (tablet), and per-breakpoint inner widths for the top bar, navbar, and message bar (tablet + mobile). Mobile = ≤640px, tablet = 641–1024px.
Dark Mode
- Enable dark mode toggle and default mode (light / dark / auto by system).
Footer & Header
- Show social icons in footer. (Sticky header lives in Header Layout.)
- Footer background / text — palette choice or custom hex.
- Footer columns — 1–4 (each maps to a block widget area under Appearance → Widgets).
- Footer tagline.
CTA & Intros
- Global project CTA plus intro text for the Projects and Contact templates.
SEO & Schema
- Output meta + schema (auto-disables if Rank Math/Yoast is active).
- Entity — Person or Organization, name, logo, default share image, Twitter/X handle.
- Emits Open Graph, Twitter cards, and JSON-LD (Person/Org, WebSite, Article, BreadcrumbList).
Performance
- Toggles: disable emojis, oEmbed/wp-embed, jQuery Migrate, XML-RPC/pingbacks, dashicons (logged-out), wp_head cleanup, defer scripts.
- Preconnect domains — comma-separated origins.
Custom Code
- Head / Body / Footer code injection (analytics, pixels, verification) and a Custom CSS box.
Newsletter
- Form action URL (Mailchimp), heading, sub-note, button text — rendered by
[prt_newsletter].
Cookie Notice
- Show notice, message, accept button, policy link (URL + text). Dismissal remembered locally.
White Label
- Login logo, login background, admin footer text, and “Get started” dashboard widget toggle.
Appearance → Pressroot
Everything above (General, Design, Layout, Header, Footer, Social Links, etc.) used to also be mirrored on a tabbed “Theme Settings” admin page. That page was removed — it was pure duplication of the Customizer controls above. What remained was four separate Appearance submenu pages (Theme Tools, Starter Sites, Pressroot AI, GitHub); those are now one page, Appearance → Pressroot, navigated with a left-sidebar menu (one section per area) and the active section’s content on the right:
Setup (tab)
The six-step guided onboarding wizard (app/setup-wizard.php) — the first
tab, and the default landing tab until it has been completed once. Progress
is saved per step (option prt_wizard_progress), the tab resumes where the
owner left off, and every step stays revisitable afterwards.
- Business info — identity, business/website type dropdown, industry,
brand & voice, colors/fonts, logo + photo/video uploads, and the
business-fact fields (
prt_biz_mission,prt_biz_about,prt_biz_email,prt_biz_phone,prt_biz_address,prt_biz_hours) that compile into the CORE SITE BRIEF so the AI states real facts. - Connections — AI provider keys, an SEO plugin selector (built-in /
Yoast / Rank Math / All in One SEO, with one-click install/activate and a
beginner’s SEO primer; stored as
prt_seo_choice), a validated GA4 Measurement ID (prt_ga4_id, auto-injects gtag.js) with Google Analytics + Google Business Profile walkthroughs, and addon toggles. - WordPress settings — timezone, pretty permalinks, site icon, search visibility (hidden while building), and comment defaults, applied in one click with plain-English explanations.
- Generate your website — runs the site-type generator, the “AI-write all pages” pass, and the brand-image generator, in labeled stages.
- Review — homepage preview, per-page preview/edit table, and a “where to change what” map.
- Launch — pre-flight checklist, publish all generated drafts, set the static front page, and re-open the site to search engines.
Full detail: SETUP-WIZARD.md.
Site Types (tab)
The default tab, and the one-click way to set the site’s whole look and starter content in one step (replaces the old standalone “Style Kits” tab — every site type below already applies its own matching palette/font/radius preset, so a separate manual kit picker was a redundant second way to do the same thing).
- Choose a site type — Agency, Freelance/Portfolio, SaaS, Blog, or Marketing landing, each with live design previews and a matching Style Kit.
- Your starter pages — regenerate any page to its other hand-built variant, or regenerate a whole site type at once.
- Generate starter hero copy — a headline + subheadline from a one-line description, using whichever AI model is selected.
- Advanced: Connect more AI models — optional free API keys for Google Gemini, Groq, and OpenRouter, alongside the always-available, keyless Pollinations default.
- Advanced: Backup & restore settings — Export all theme settings as JSON, Import a previous export, or Reset everything to defaults (moved here from the old Style Kits tab — same tools, same behavior).
- Can be switched off entirely via Customize → Theme Options → Theme Addons (“Enable Pressroot AI”) — the tab disappears when disabled.
GitHub (tab)
- Default GitHub owner, API token, data cache (hours), OAuth Client ID, and Connect with GitHub (device-flow login) — raises the API rate limit for the live repo data shown on project pages.
Support (tab)
Always visible, regardless of the Pressroot AI addon toggle.
- Repository status — live stats, topics, language breakdown, and recent
releases/changelog for “this theme’s repository,” pulled through the same
live GitHub data engine (
App\Github) that powers project pages. - Open issues — the most recently updated open issues, with links to view all issues or open a new one.
- Documentation — a curated list of links straight to the theme’s own docs (Architecture, Settings reference, Development, Build log, Brand & design system).
- Edit repository — which owner/repo counts as “this theme,” separate from the GitHub tab’s default owner (that one’s just a fallback for individual Projects).
Appearance → Local Fonts
- Download fonts now — fetch the active families’ woff2 into
uploads/prt-fonts/. - Serve fonts locally — use the local stylesheet and remove every Google Fonts request + preconnect.
- Separately, the full Google Fonts library (1,500+ families) is registered as a Font Collection in the native block editor Font Library (Appearance → Editor → Styles → Typography → “Manage fonts”) — browsable/filterable by category, downloaded and self-hosted on install.
Appearance → Pattern Library
A read-only admin page listing every pattern registered in the “Pressroot” category (the general-purpose ones below, not the Site Type patterns, which live under their own “AI Site Types” category and are reached through Site Types instead), plus a link to the Synced Patterns editor and a short “how to insert a pattern” walkthrough.
Reading experience (single posts)
Always on, no settings — automatic on every single post:
- Table of contents — auto-built from the post’s headings.
- Reading progress bar and estimated reading time.
- Copy buttons on code blocks (pairs with the Prism syntax highlighting below).
Blocks (in the inserter, “Pressroot” category)
- Social Icons — inline Blade SVG social icons; pulls from site social links by default, fully styleable (size, shape, brand/mono, colors, hover, alignment).
- Icon (Blade) — drop in any Blade icon by name (
si-…,heroicon-o-…,lucide-…,prt-…), with size, color, alignment. - Post Grid — query posts/projects/pages into a responsive card grid (columns, count, order, image/excerpt/date/category toggles).
- GitHub blocks — repo card, repo grid, user/org stats, and releases, all backed by the same live/cached
App\Githubdata used by the Support tab and project pages. - Patterns — 22 general-purpose patterns (Hero, Pricing, Testimonials, Logo cloud, Feature grid, Callout, CTA band, Stat strip, FAQ, and more) — browse the full, current list on Appearance → Pattern Library rather than here, since it’s kept in sync with what’s actually registered. Site Type patterns (26 more, two hand-built variants per starter page) are separate — see the Site Types tab above.
Shortcodes
[prt_newsletter]— newsletter signup form (Customizer → Newsletter).[prt_breadcrumbs]— breadcrumb trail with BreadcrumbList schema.
Per-project (Projects → edit → “Project Details”)
- GitHub owner / repo, eyebrow, demo URL — drive the live GitHub data section on each project.
Appearance → Pressroot → Brand (v1.5)
The non-technical control panel — every answer steers the design generator and the AI:
| Question | Stored as | Drives |
|---|---|---|
| Business name | prt_brand_name |
Hero eyebrow default, AI prompts, optional site title |
| One-line description | prt_brand_desc |
Hero subtext default, AI prompts, optional tagline |
| Brand color | prt_brand_color |
Overrides every dealt kit’s accent (prt_color_action) |
| Light or dark? | prt_brand_mode |
Filters which Style Kits can be dealt |
| Personality | prt_brand_vibe |
Filters kits and design trends |
| Who is it for? | prt_brand_audience |
AI copy targeting |
| Industry | prt_brand_industry |
AI copy + AI image prompts |
| Three voice words | prt_brand_tone |
AI copy voice + image mood |
| Main goal | prt_brand_goal |
Every AI-written call-to-action |
| Imagery style | prt_brand_imagery |
AI image generation style |
| Content density | prt_brand_density |
AI copy length |
| Design trend | prt_brand_trend |
Lock one trend, or 🎲 rotate per refresh |
| Site title & tagline sync | checkbox | Copies name/description to Settings → General |
| Powered by AI — or not | prt_ai_features_on |
Master switch for every AI-calling feature |
Design generator (Site Types tab, v1.5)
- 8 site types: agency, freelance, saas, blog, marketing, affiliate, restaurant, realty. Picker cards preview all four designs per page (A/B hand-built, C/D generated by
app/site-type-remix.php), each rendered in the type’s own kit via?prt_preview_kit=. - Every 🎲 deal: random variant per page (never the current one) + random kit from the type’s pool + random design trend — then
prt_refresh_branding()re-asserts the brand color andprt_flush_design_caches()clears critical CSS. - Design trends (
prt_design_trends(), body classprt-trend-*): bento, glass, brutalist, editorial, minimal, retro_pop — pure CSS layers inresources/css/app.css. - Kits: 13 total;
core_marketingis reserved — only the Marketing type’s pool contains it. - ✨ AI Builder (
app/ai-builder.php): “Write with AI” per page / per type replaces text segments only (block markup is never AI-generated); “Generate brand image” sideloads a Pollinations image into the Media Library and sets the hero. All gated byprt_ai_features_enabled(). - Gutenberg is the page builder: every generated page is plain blocks — “Edit blocks” opens the block editor.
Homepage hero (generic, v1.5)
All Customizer → Theme Options → Hero. Two-tone headline in four editable pieces: prt_hero_title (“Your brand in.”) + prt_hero_accent (gradient, “Your site”) + prt_hero_serif (italic serif, “out.”) + prt_hero_suffix (empty by default). Also: prt_hero_subtext, prt_hero_btn1_text/_url, prt_hero_btn2_text/_url, prt_hero_chip1/2 (blank hides). A saved Brand profile supplies smarter defaults for the eyebrow and subtext.
Notes for developers
- All front-end overrides are emitted via the
prt_head_endaction, which fires after the built stylesheet, so settings win without!importantgymnastics. - Icons use Blade Icons (Simple Icons
si-, Heroiconsheroicon-o-/-s-, Lucidelucide-, and a localprt-set inresources/svg/). - Module files live in
app/*.phpand are registered infunctions.php.