Twenty Twenty-Five Theme Configuration
Theme Type
Block theme (Full Site Editing). All visual configuration is stored in Global Styles (wp_global_styles post type), NOT in the Customizer or theme mods.
When to use
- The user wants to change colors, fonts, spacing, or layout of Twenty Twenty-Five
- The user wants to switch between style variations (8 available)
- The user wants to switch between template/header/footer variations
- The user wants to customize per-block styles (buttons, quotes, navigation, etc.)
- The user wants to use block patterns for page layouts (98 available)
- The user wants to set up the site identity (title, tagline, logo)
Inputs required
- What aspect to configure (colors, typography, layout, templates, or all)
- The desired values (specific colors, font choices, sizes, etc.)
AI-Guided Configuration Workflow
When configuring Twenty Twenty-Five, offer the user two modes:
Mode 1: "Guide me step by step"
Ask the user about each configuration area:
Style Variation: "Twenty Twenty-Five comes with 8 pre-built style variations, each with a completely different look. Would you like to start with one?
- Default — Clean white base, yellow/pink/purple accents, Manrope sans-serif, light weight (300)
- Evening — Dark theme (#1B1B1B), olive/purple accents, Manrope font
- Noon — Elegant cream base, peach accents, Literata serif body + Beiruti sans buttons
- Dusk — Light gray, vibrant purple accents, Fira Code monospace body + Vollkorn serif headings
- Afternoon — Nature green/sage palette, Ysabeau Office body + Platypi headings, sharp buttons
- Twilight — Very dark with blue/coral accents, Roboto Slab headings, uppercase navigation
- Morning — Beige/tan with soft blue accents, Ysabeau Office body + Literata headings (weight 900)
- Sunrise — Dark burgundy with rose/yellow accents, Literata body (1.5rem) + Platypi headings (weight 800)
- Midnight — Deep purple with neon cyan, cyberpunk style, duotone images, Fira Sans body + Literata headings
Pick one, or customize from scratch."
Colors: "The theme uses 8 color slots:
- Base — Main background (default: white)
- Contrast — Main text (default: near-black)
- Accent 1 — Primary accent (default: yellow)
- Accent 2 — Secondary accent (default: light pink)
- Accent 3 — Tertiary accent (default: purple)
- Accent 4 — Subdued text (default: gray — used for dates, secondary text)
- Accent 5 — Subtle background (default: off-white)
- Accent 6 — Dynamic (20% of current text color — used for borders, separators)
What are your brand colors?"
Typography: "Default: Manrope (light weight 300) for body, same for headings. Also available: Fira Code (monospace). Style variations add 7 more fonts: Beiruti, Literata, Vollkorn, Platypi, Ysabeau Office, Roboto Slab, Fira Sans."
Header/Footer: "Three header options:
- Default — Standard header with title + navigation
- Vertical — Sidebar-style vertical header
- Large Title — Prominent title header
Three footer options:
- Default — Standard footer
- Columns — Multi-column footer layout
- Newsletter — Footer with newsletter signup
Which combination do you prefer?"
Blog Style: "The theme includes patterns for 4 blog styles:
- News blog — Traditional news layout
- Photo blog — Visual/photography focused
- Text blog — Text-focused, minimal
- Vertical header blog — Blog with sidebar navigation
Each has matching home, single, archive, and search templates."
Page Layouts: "Need specific page layouts? Available patterns include:
- Business/portfolio/shop home pages
- Landing pages (book, event, podcast, coming soon)
- Link-in-bio pages (3 variants)
- CV/bio page
- Hero sections, banners, pricing tables, testimonials, event schedules"
Site identity: "What is your site name, tagline, logo, and favicon?"
Mode 2: "Design it for me"
- Ask: site type, brand color (if any), general feel (modern, elegant, bold, minimal, warm, dark, tech)
- Select the best style variation as base
- Choose matching header/footer combination
- Apply all settings in one batch
- Tell the user what was configured and why
Procedure
0) Verify the active theme
Call mcm/theme-config-guide — it auto-detects the active theme and confirms it is twentytwentyfive (block theme).
1) Read current configuration
// Read all Global Styles (settings + styles merged)
mcm/get-global-styles {"section": "both", "origin": "all"}
// Read only user customizations (overrides over theme.json defaults)
mcm/get-global-styles {"section": "both", "origin": "user"}
// Read only color settings
mcm/get-global-styles {"section": "settings", "path": "color.palette"}
// Read only typography styles
mcm/get-global-styles {"section": "styles", "path": "typography"}
2) Apply configuration changes
See references/theme-options.md for all available options with exact slugs and default values.
See ../global-styles-api.md for the full API reference.
General pattern for updating Global Styles:
// Change background and text colors (deep merge — other settings remain intact)
mcm/set-global-styles {
"styles": {
"color": {
"background": "var:preset|color|contrast",
"text": "var:preset|color|base"
}
}
}
// Change the color palette
mcm/set-global-styles {
"settings": {
"color": {
"palette": {
"theme": [
{"color": "#FFFFFF", "name": "Base", "slug": "base"},
{"color": "#1A1A2E", "name": "Contrast", "slug": "contrast"},
{"color": "#E94560", "name": "Accent 1", "slug": "accent-1"},
{"color": "#F6CFF4", "name": "Accent 2", "slug": "accent-2"},
{"color": "#503AA8", "name": "Accent 3", "slug": "accent-3"},
{"color": "#686868", "name": "Accent 4", "slug": "accent-4"},
{"color": "#FBFAF3", "name": "Accent 5", "slug": "accent-5"},
{"color": "color-mix(in srgb, currentColor 20%, transparent)", "name": "Accent 6", "slug": "accent-6"}
]
}
}
}
}
// Change body typography
mcm/set-global-styles {
"styles": {
"typography": {
"fontFamily": "var:preset|font-family|fira-code",
"fontSize": "var:preset|font-size|medium",
"fontWeight": "400",
"lineHeight": "1.6"
}
}
}
// Change layout widths
mcm/set-global-styles {
"settings": {
"layout": {
"contentSize": "720px",
"wideSize": "1200px"
}
}
}
3) Style Variations
Twenty Twenty-Five ships with 8 style variations (Evening, Noon, Dusk, Afternoon, Twilight, Morning, Sunrise, Midnight). Each provides unique colors and most introduce new fonts. See references/theme-options.md for details.
// Get available variations
mcm/get-global-styles {"section": "both"}
// Apply a variation (use merge_mode replace)
mcm/set-global-styles {
"settings": { /* variation's settings */ },
"styles": { /* variation's styles */ },
"merge_mode": "replace"
}
Note: Each variation defines section variations (section-1 through section-5) that apply different colors to Group blocks using .is-style-section-N classes.
4) Configure templates and template parts
Headers:
header — Default header
vertical-header — Vertical site header
header-large-title — Header with large title
Footers:
footer — Default footer
footer-columns — Footer with columns
footer-newsletter — Footer with newsletter
Other parts:
To switch a template part, use mcm/search-content to find the template, then mcm/update-content to modify the block content.
5) Block Patterns (98 patterns)
The theme includes 98 patterns organized by use case:
- Headers (5): default, vertical, large-title, centered, columns
- Footers (5): default, columns, newsletter, centered, social
- Blog query loops (5): standard, text, photo, news, vertical-header
- Template variants (30+): home/single/archive/search for each blog style
- Hero/Banner (7): full-width, book, podcast, intro, poster
- CTA/Marketing (7): centered, newsletter, events, book links
- Business sections: services, team, pricing, testimonials, events
- Landing pages (8): book, event, podcast, coming-soon, CV/bio, link-in-bio
- Hidden/Utility (8): blog-heading, search, 404, written-by, sidebar, navigation, comments, more-posts
6) Set up site identity
mcm/set-option {"name": "blogname", "value": "Site Name"}
mcm/set-option {"name": "blogdescription", "value": "Site Tagline"}
mcm/set-theme-mod {"key": "custom_logo", "value": <attachment_id>}
mcm/set-option {"name": "site_icon", "value": <attachment_id>}
mcm/set-option {"name": "show_on_front", "value": "page"}
mcm/set-option {"name": "page_on_front", "value": <page_id>}
mcm/set-option {"name": "page_for_posts", "value": <page_id>}
Verification
Failure modes / debugging
- Changes not visible: Cache is automatically cleared by MCP abilities; clear browser cache if needed
- Global Styles post not found: The theme may not have been activated yet; use
mcm/install-theme with slug twentytwentyfive to install and activate
- Font not loading: Base fonts:
manrope, fira-code. Variation fonts are only available when that variation is active.
- Color not applying: Use the
var:preset|color|{slug} format, not raw hex values. Accent 6 is dynamic — it uses color-mix().
- Section variations not working: Apply with Group block using
.is-style-section-N class. Only available when a style variation defines them.
- Duotone not working: Only the Midnight variation defines duotone filters.
- Pattern not found: Use
twentytwentyfive/ prefix (e.g., twentytwentyfive/hero-full-width-image)
Reference files
- theme-options.md — Complete list of all configurable options with slugs and defaults
- ../global-styles-api.md — Shared API reference for saving configuration
1---2name: twentytwentyfive3description: Use when configuring the Twenty Twenty-Five WordPress theme. Provides all available options (colors, typography, layout, spacing, templates, block styles, 8 style variations, 98 patterns) and procedures to apply them via MCP Content Manager abilities.4---56# Twenty Twenty-Five Theme Configuration78## Theme Type910**Block theme (Full Site Editing)**. All visual configuration is stored in Global Styles (`wp_global_styles` post type), NOT in the Customizer or theme mods.1112## When to use1314- The user wants to change colors, fonts, spacing, or layout of Twenty Twenty-Five15- The user wants to switch between style variations (8 available)16- The user wants to switch between template/header/footer variations17- The user wants to customize per-block styles (buttons, quotes, navigation, etc.)18- The user wants to use block patterns for page layouts (98 available)19- The user wants to set up the site identity (title, tagline, logo)2021## Inputs required2223- What aspect to configure (colors, typography, layout, templates, or all)24- The desired values (specific colors, font choices, sizes, etc.)2526## AI-Guided Configuration Workflow2728When configuring Twenty Twenty-Five, offer the user **two modes**:2930### Mode 1: "Guide me step by step"3132Ask the user about each configuration area:33341. **Style Variation**: "Twenty Twenty-Five comes with **8 pre-built style variations**, each with a completely different look. Would you like to start with one?35 - **Default** — Clean white base, yellow/pink/purple accents, Manrope sans-serif, light weight (300)36 - **Evening** — Dark theme (#1B1B1B), olive/purple accents, Manrope font37 - **Noon** — Elegant cream base, peach accents, Literata serif body + Beiruti sans buttons38 - **Dusk** — Light gray, vibrant purple accents, Fira Code monospace body + Vollkorn serif headings39 - **Afternoon** — Nature green/sage palette, Ysabeau Office body + Platypi headings, sharp buttons40 - **Twilight** — Very dark with blue/coral accents, Roboto Slab headings, uppercase navigation41 - **Morning** — Beige/tan with soft blue accents, Ysabeau Office body + Literata headings (weight 900)42 - **Sunrise** — Dark burgundy with rose/yellow accents, Literata body (1.5rem) + Platypi headings (weight 800)43 - **Midnight** — Deep purple with neon cyan, cyberpunk style, duotone images, Fira Sans body + Literata headings44 Pick one, or customize from scratch."45462. **Colors**: "The theme uses **8 color slots**:47 - **Base** — Main background (default: white)48 - **Contrast** — Main text (default: near-black)49 - **Accent 1** — Primary accent (default: yellow)50 - **Accent 2** — Secondary accent (default: light pink)51 - **Accent 3** — Tertiary accent (default: purple)52 - **Accent 4** — Subdued text (default: gray — used for dates, secondary text)53 - **Accent 5** — Subtle background (default: off-white)54 - **Accent 6** — Dynamic (20% of current text color — used for borders, separators)55 What are your brand colors?"56573. **Typography**: "Default: Manrope (light weight 300) for body, same for headings. Also available: Fira Code (monospace). Style variations add 7 more fonts: Beiruti, Literata, Vollkorn, Platypi, Ysabeau Office, Roboto Slab, Fira Sans."58594. **Header/Footer**: "Three header options:60 - **Default** — Standard header with title + navigation61 - **Vertical** — Sidebar-style vertical header62 - **Large Title** — Prominent title header63 Three footer options:64 - **Default** — Standard footer65 - **Columns** — Multi-column footer layout66 - **Newsletter** — Footer with newsletter signup67 Which combination do you prefer?"68695. **Blog Style**: "The theme includes patterns for 4 blog styles:70 - **News blog** — Traditional news layout71 - **Photo blog** — Visual/photography focused72 - **Text blog** — Text-focused, minimal73 - **Vertical header blog** — Blog with sidebar navigation74 Each has matching home, single, archive, and search templates."75766. **Page Layouts**: "Need specific page layouts? Available patterns include:77 - Business/portfolio/shop home pages78 - Landing pages (book, event, podcast, coming soon)79 - Link-in-bio pages (3 variants)80 - CV/bio page81 - Hero sections, banners, pricing tables, testimonials, event schedules"82837. **Site identity**: "What is your site name, tagline, logo, and favicon?"8485### Mode 2: "Design it for me"86871. Ask: site type, brand color (if any), general feel (modern, elegant, bold, minimal, warm, dark, tech)882. Select the best style variation as base893. Choose matching header/footer combination904. Apply all settings in one batch915. Tell the user what was configured and why9293## Procedure9495### 0) Verify the active theme9697Call `mcm/theme-config-guide` — it auto-detects the active theme and confirms it is `twentytwentyfive` (block theme).9899### 1) Read current configuration100101```json102// Read all Global Styles (settings + styles merged)103mcm/get-global-styles {"section": "both", "origin": "all"}104105// Read only user customizations (overrides over theme.json defaults)106mcm/get-global-styles {"section": "both", "origin": "user"}107108// Read only color settings109mcm/get-global-styles {"section": "settings", "path": "color.palette"}110111// Read only typography styles112mcm/get-global-styles {"section": "styles", "path": "typography"}113```114115### 2) Apply configuration changes116117See [references/theme-options.md](references/theme-options.md) for all available options with exact slugs and default values.118119See [../global-styles-api.md](../global-styles-api.md) for the full API reference.120121**General pattern for updating Global Styles:**122123```json124// Change background and text colors (deep merge — other settings remain intact)125mcm/set-global-styles {126 "styles": {127 "color": {128 "background": "var:preset|color|contrast",129 "text": "var:preset|color|base"130 }131 }132}133134// Change the color palette135mcm/set-global-styles {136 "settings": {137 "color": {138 "palette": {139 "theme": [140 {"color": "#FFFFFF", "name": "Base", "slug": "base"},141 {"color": "#1A1A2E", "name": "Contrast", "slug": "contrast"},142 {"color": "#E94560", "name": "Accent 1", "slug": "accent-1"},143 {"color": "#F6CFF4", "name": "Accent 2", "slug": "accent-2"},144 {"color": "#503AA8", "name": "Accent 3", "slug": "accent-3"},145 {"color": "#686868", "name": "Accent 4", "slug": "accent-4"},146 {"color": "#FBFAF3", "name": "Accent 5", "slug": "accent-5"},147 {"color": "color-mix(in srgb, currentColor 20%, transparent)", "name": "Accent 6", "slug": "accent-6"}148 ]149 }150 }151 }152}153154// Change body typography155mcm/set-global-styles {156 "styles": {157 "typography": {158 "fontFamily": "var:preset|font-family|fira-code",159 "fontSize": "var:preset|font-size|medium",160 "fontWeight": "400",161 "lineHeight": "1.6"162 }163 }164}165166// Change layout widths167mcm/set-global-styles {168 "settings": {169 "layout": {170 "contentSize": "720px",171 "wideSize": "1200px"172 }173 }174}175```176177### 3) Style Variations178179Twenty Twenty-Five ships with **8 style variations** (Evening, Noon, Dusk, Afternoon, Twilight, Morning, Sunrise, Midnight). Each provides unique colors and most introduce new fonts. See [references/theme-options.md](references/theme-options.md) for details.180181```json182// Get available variations183mcm/get-global-styles {"section": "both"}184185// Apply a variation (use merge_mode replace)186mcm/set-global-styles {187 "settings": { /* variation's settings */ },188 "styles": { /* variation's styles */ },189 "merge_mode": "replace"190}191```192193**Note:** Each variation defines section variations (`section-1` through `section-5`) that apply different colors to Group blocks using `.is-style-section-N` classes.194195### 4) Configure templates and template parts196197**Headers:**198- `header` — Default header199- `vertical-header` — Vertical site header200- `header-large-title` — Header with large title201202**Footers:**203- `footer` — Default footer204- `footer-columns` — Footer with columns205- `footer-newsletter` — Footer with newsletter206207**Other parts:**208- `sidebar` — Sidebar209210To switch a template part, use `mcm/search-content` to find the template, then `mcm/update-content` to modify the block content.211212### 5) Block Patterns (98 patterns)213214The theme includes 98 patterns organized by use case:215216- **Headers** (5): default, vertical, large-title, centered, columns217- **Footers** (5): default, columns, newsletter, centered, social218- **Blog query loops** (5): standard, text, photo, news, vertical-header219- **Template variants** (30+): home/single/archive/search for each blog style220- **Hero/Banner** (7): full-width, book, podcast, intro, poster221- **CTA/Marketing** (7): centered, newsletter, events, book links222- **Business sections**: services, team, pricing, testimonials, events223- **Landing pages** (8): book, event, podcast, coming-soon, CV/bio, link-in-bio224- **Hidden/Utility** (8): blog-heading, search, 404, written-by, sidebar, navigation, comments, more-posts225226### 6) Set up site identity227228```json229mcm/set-option {"name": "blogname", "value": "Site Name"}230mcm/set-option {"name": "blogdescription", "value": "Site Tagline"}231mcm/set-theme-mod {"key": "custom_logo", "value": <attachment_id>}232mcm/set-option {"name": "site_icon", "value": <attachment_id>}233mcm/set-option {"name": "show_on_front", "value": "page"}234mcm/set-option {"name": "page_on_front", "value": <page_id>}235mcm/set-option {"name": "page_for_posts", "value": <page_id>}236```237238## Verification239240- [ ] Colors display correctly on the frontend241- [ ] Typography (font family, sizes, weights) renders as expected242- [ ] Layout widths (content/wide) are correct243- [ ] Header and footer variations are correct244- [ ] Navigation links work245- [ ] Site title and tagline display correctly246- [ ] Button styles (default and outline) look right247- [ ] Style variation applied correctly (if used)248- [ ] Blog query patterns display posts correctly249- [ ] Section variations display different colors (if used)250- [ ] Responsive behavior works (fluid typography, spacing)251252## Failure modes / debugging253254- **Changes not visible:** Cache is automatically cleared by MCP abilities; clear browser cache if needed255- **Global Styles post not found:** The theme may not have been activated yet; use `mcm/install-theme` with slug `twentytwentyfive` to install and activate256- **Font not loading:** Base fonts: `manrope`, `fira-code`. Variation fonts are only available when that variation is active.257- **Color not applying:** Use the `var:preset|color|{slug}` format, not raw hex values. Accent 6 is dynamic — it uses `color-mix()`.258- **Section variations not working:** Apply with Group block using `.is-style-section-N` class. Only available when a style variation defines them.259- **Duotone not working:** Only the Midnight variation defines duotone filters.260- **Pattern not found:** Use `twentytwentyfive/` prefix (e.g., `twentytwentyfive/hero-full-width-image`)261262## Reference files263264- **[theme-options.md](references/theme-options.md)** — Complete list of all configurable options with slugs and defaults265- **[../global-styles-api.md](../global-styles-api.md)** — Shared API reference for saving configuration