[ 'label' => 'Discovery Call', 'code' => '01', 'summary' => 'A low-friction first step for visitors who want to explore fit, goals, and next steps before committing.', 'bullets' => ['30 minutes', 'Ideal first conversation', 'Best for fit and direction'], ], 'clarity-session' => [ 'label' => 'Clarity Session', 'code' => '02', 'summary' => 'A focused deep-dive session for transitions, decisions, leadership tension, and getting unstuck quickly.', 'bullets' => ['90-minute intensive', 'Decision support', 'Action summary included'], ], 'momentum-coaching' => [ 'label' => 'Momentum Coaching', 'code' => '03', 'summary' => 'Ongoing coaching for clients who need accountability, calm execution, and stronger follow-through over time.', 'bullets' => ['Ongoing 1:1 rhythm', 'Reflection between sessions', 'Built for durable progress'], ], 'leadership-intensive' => [ 'label' => 'Leadership Intensive', 'code' => '04', 'summary' => 'A premium strategy container for founders, executives, and senior leaders navigating a high-stakes season.', 'bullets' => ['Executive-level support', 'Complex challenges welcome', 'Clear implementation path'], ], ]; } function coaching_mvp_services() { $services = []; foreach (coaching_mvp_service_catalog() as $slug => $service) { $services[$slug] = $service['label']; } return $services; } function coaching_mvp_register_post_types() { register_post_type('testimonial', [ 'labels' => [ 'name' => 'Testimonials', 'singular_name' => 'Testimonial', 'add_new_item' => 'Add New Testimonial', 'edit_item' => 'Edit Testimonial', ], 'public' => true, 'show_in_rest' => true, 'menu_icon' => 'dashicons-format-quote', 'supports' => ['title', 'editor', 'excerpt', 'page-attributes'], 'has_archive' => false, 'rewrite' => ['slug' => 'testimonial'], ]); register_post_type('booking_request', [ 'labels' => [ 'name' => 'Bookings', 'singular_name' => 'Booking', 'add_new_item' => 'Add Booking', 'edit_item' => 'View Booking', ], 'public' => false, 'show_ui' => true, 'show_in_rest' => false, 'menu_icon' => 'dashicons-calendar-alt', 'supports' => ['title'], 'capability_type' => 'post', 'map_meta_cap' => true, ]); register_post_type('lead_capture', [ 'labels' => [ 'name' => 'Leads', 'singular_name' => 'Lead', 'add_new_item' => 'Add Lead', 'edit_item' => 'View Lead', ], 'public' => false, 'show_ui' => true, 'show_in_rest' => false, 'menu_icon' => 'dashicons-email-alt2', 'supports' => ['title'], 'capability_type' => 'post', 'map_meta_cap' => true, ]); } add_action('init', 'coaching_mvp_register_post_types'); function coaching_mvp_body_class($classes) { $classes[] = 'coaching-mvp-active'; return $classes; } add_filter('body_class', 'coaching_mvp_body_class'); function coaching_mvp_styles() { if (is_admin()) { return; } wp_register_style('coaching-mvp-inline', false, [], null); wp_enqueue_style('coaching-mvp-inline'); $css = <<<'CSS' :root { --coach-primary: #5468ff; --coach-secondary: #13c7b8; --coach-accent: #d7b267; --coach-background: #f6f4ef; --coach-surface: #ffffff; --coach-surface-soft: rgba(255,255,255,.72); --coach-text: #142033; --coach-muted: #667085; --coach-deep: #0d1530; --coach-deeper: #091022; --coach-border: rgba(20,32,51,.09); --coach-shadow: 0 30px 80px rgba(15,23,42,.12); --coach-shadow-lg: 0 50px 120px rgba(8,15,34,.22); --coach-radius: 28px; --coach-radius-sm: 18px; --coach-spacing: 1.5rem; } body.coaching-mvp-active { background: radial-gradient(circle at top left, rgba(84,104,255,.10), transparent 28%), radial-gradient(circle at top right, rgba(215,178,103,.12), transparent 26%), linear-gradient(180deg, #f1f5ff 0%, #faf8f4 38%, #ffffff 100%); color: var(--coach-text); } body.coaching-mvp-active .wp-site-blocks, body.coaching-mvp-active .site, body.coaching-mvp-active main { color: var(--coach-text); } body.coaching-mvp-active { --coach-page-gutter: 20px; --coach-content-max: 1280px; --coach-wide-max: 1320px; --wp--style--global--content-size: min(var(--coach-content-max), calc(100% - (var(--coach-page-gutter) * 2))); --wp--style--global--wide-size: min(var(--coach-wide-max), calc(100% - (var(--coach-page-gutter) * 2))); } body.coaching-mvp-active .wp-block-post-content, body.coaching-mvp-active .wp-block-query, body.coaching-mvp-active .wp-block-group { width: 100%; } body.coaching-mvp-active main.wp-block-group.has-global-padding, body.coaching-mvp-active .entry-content.wp-block-post-content.has-global-padding, body.coaching-mvp-active .coach-home-page, body.coaching-mvp-active .coach-shell, body.coaching-mvp-active .coach-shell > .wp-block-group__inner-container, body.coaching-mvp-active .coach-section > .wp-block-group__inner-container { box-sizing: border-box; } body.coaching-mvp-active main.wp-block-group.has-global-padding, body.coaching-mvp-active .entry-content.wp-block-post-content.has-global-padding { padding-left: var(--coach-page-gutter) !important; padding-right: var(--coach-page-gutter) !important; } body.coaching-mvp-active main > .wp-block-group.alignfull.has-global-padding { margin-left: 0 !important; margin-right: 0 !important; padding-left: 0 !important; padding-right: 0 !important; } body.coaching-mvp-active .entry-content.wp-block-post-content.has-global-padding { max-width: none !important; } body.coaching-mvp-active .entry-content.alignfull.wp-block-post-content.has-global-padding { width: 100% !important; margin-left: 0 !important; margin-right: 0 !important; } body.coaching-mvp-active .coach-home-page, body.coaching-mvp-active .coach-shell, body.coaching-mvp-active .coach-shell > .wp-block-group__inner-container { width: min(100%, var(--coach-content-max)); max-width: var(--coach-content-max); margin-left: auto !important; margin-right: auto !important; } body.coaching-mvp-active .coach-home-page > .wp-block-group__inner-container, body.coaching-mvp-active .coach-shell > .wp-block-group__inner-container, body.coaching-mvp-active .coach-section > .wp-block-group__inner-container { padding-left: 0 !important; padding-right: 0 !important; } body.coaching-mvp-active .coach-home-page > .wp-block-group__inner-container > :where(:not(.alignleft):not(.alignright):not(.alignfull)), body.coaching-mvp-active .coach-shell > .wp-block-group__inner-container > :where(:not(.alignleft):not(.alignright):not(.alignfull)), body.coaching-mvp-active .coach-section > .wp-block-group__inner-container > :where(:not(.alignleft):not(.alignright):not(.alignfull)), body.coaching-mvp-active .coach-home-page > .wp-block-group__inner-container > .alignwide, body.coaching-mvp-active .coach-shell > .wp-block-group__inner-container > .alignwide, body.coaching-mvp-active .coach-section > .wp-block-group__inner-container > .alignwide, body.coaching-mvp-active .coach-hero, body.coaching-mvp-active .coach-section, body.coaching-mvp-active .coach-stats-grid { width: 100%; max-width: 100%; margin-left: 0 !important; margin-right: 0 !important; box-sizing: border-box; } body.coaching-mvp-active .wp-site-blocks { overflow-x: clip; } body.coaching-mvp-active header.wp-block-template-part { position: sticky; top: 0; z-index: 30; backdrop-filter: blur(18px); background: rgba(255,255,255,.78); border-bottom: 1px solid rgba(20,32,51,.06); } body.coaching-mvp-active header.wp-block-template-part .wp-block-group.has-global-padding.is-layout-constrained { padding-left: var(--coach-page-gutter) !important; padding-right: var(--coach-page-gutter) !important; } body.coaching-mvp-active header.wp-block-template-part .wp-block-group.alignwide { width: min(calc(100% - (var(--coach-page-gutter) * 2)), var(--coach-content-max)); max-width: var(--coach-content-max); margin-left: auto !important; margin-right: auto !important; } body.coaching-mvp-active .wp-block-site-title a, body.coaching-mvp-active .wp-block-navigation a, body.coaching-mvp-active .wp-block-navigation-item__content { color: var(--coach-text); text-decoration: none; } body.coaching-mvp-active .wp-block-navigation .wp-block-navigation-item__content { font-weight: 600; } body.coaching-mvp-active .wp-block-navigation .current-menu-item > a, body.coaching-mvp-active .wp-block-navigation .current_page_item > a { color: var(--coach-primary); } body.coaching-mvp-active .wp-block-button__link { border-radius: 999px; padding: .95rem 1.4rem; font-weight: 700; text-decoration: none; box-shadow: none; } body.coaching-mvp-active .wp-block-button.is-style-outline > .wp-block-button__link { border-radius: 999px; } body.coaching-mvp-active .wp-block-post-title, body.coaching-mvp-active h1, body.coaching-mvp-active h2, body.coaching-mvp-active h3, body.coaching-mvp-active h4 { letter-spacing: -.03em; } body.coaching-mvp-active.page .wp-block-post-title { display: none; } body.coaching-mvp-active.page main > .wp-block-group.alignfull.has-global-padding { padding-top: 0 !important; } .coach-shell, .coach-hero, .coach-section, .coach-panel, .coach-form-wrap, .coach-service-card, .coach-testimonial-card, .coach-stat, .coach-process-card, .coach-mini-card, .coach-faq-card, .coach-story-card, .coach-system-card, .coach-blog-card, .coach-quote-card, .coach-visual-card { border-radius: var(--coach-radius); } .coach-shell > * + * { margin-top: clamp(1.5rem, 3vw, 2.5rem); } .coach-section { margin-top: clamp(1.7rem, 4vw, 3rem); } .coach-hero { position: relative; overflow: hidden; padding: clamp(2rem, 5vw, 4rem); background: radial-gradient(circle at top right, rgba(215,178,103,.28), transparent 25%), radial-gradient(circle at left center, rgba(19,199,184,.18), transparent 30%), linear-gradient(135deg, #091022 0%, #15254c 45%, #293f7c 75%, #5468ff 100%); box-shadow: var(--coach-shadow-lg); } .coach-hero::before { content: ""; position: absolute; inset: auto -10% -25% 45%; height: 360px; background: radial-gradient(circle, rgba(255,255,255,.16), transparent 60%); pointer-events: none; } .coach-hero h1, .coach-hero h2, .coach-hero p, .coach-hero li, .coach-hero strong, .coach-hero .coach-quote-card { color: #fff; } .coach-hero .wp-block-buttons .wp-block-button__link, .coach-cta-row .wp-block-button__link, .coach-form-wrap button, .coach-inline-link { border-radius: 999px; padding: .95rem 1.4rem; font-weight: 700; text-decoration: none; } .coach-eyebrow { display: inline-flex; align-items: center; gap: .5rem; padding: .48rem .92rem; border-radius: 999px; background: rgba(255,255,255,.10); border: 1px solid rgba(255,255,255,.18); font-size: .8rem; letter-spacing: .08em; text-transform: uppercase; } .coach-badge { display: inline-flex; align-items: center; gap: .45rem; padding: .42rem .8rem; border-radius: 999px; background: rgba(84,104,255,.10); color: var(--coach-primary); font-size: .84rem; font-weight: 800; } .coach-badge.dark { background: rgba(255,255,255,.12); color: #fff; } .coach-grid-2, .coach-grid-3, .coach-grid-4, .coach-card-grid, .coach-testimonial-grid, .coach-process-grid, .coach-story-grid, .coach-faq-grid, .coach-stats-grid, .coach-mini-grid, .coach-system-grid, .coach-blog-grid, .coach-visual-grid, .coach-booking-layout { display: grid; gap: 1.2rem; } .coach-grid-2, .coach-booking-layout { grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); } .coach-grid-3, .coach-card-grid, .coach-testimonial-grid, .coach-process-grid, .coach-story-grid, .coach-faq-grid, .coach-mini-grid, .coach-system-grid, .coach-blog-grid, .coach-visual-grid { grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); } .coach-grid-4, .coach-stats-grid { grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); } .coach-panel, .coach-service-card, .coach-testimonial-card, .coach-stat, .coach-process-card, .coach-mini-card, .coach-faq-card, .coach-story-card, .coach-form-wrap, .coach-system-card, .coach-blog-card, .coach-quote-card, .coach-visual-card { background: rgba(255,255,255,.92); border: 1px solid var(--coach-border); box-shadow: var(--coach-shadow); padding: 1.35rem; } .coach-panel.soft, .coach-quote-card, .coach-visual-card.dark { background: rgba(255,255,255,.10); border-color: rgba(255,255,255,.16); box-shadow: none; } .coach-quote-card { color: #fff; } .coach-visual-card { min-height: 140px; } .coach-visual-card h3, .coach-visual-card p { color: #fff; } .coach-hero-shell { position: relative; z-index: 1; width: 100%; max-width: 35rem; margin-left: auto; } .coach-hero .wp-block-columns { gap: clamp(1.4rem, 3.2vw, 3rem); } .coach-hero .wp-block-column { min-width: 0; } .coach-photo-stack { display: grid; gap: 1rem; } .coach-photo-row { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; } .coach-photo-card { margin: 0; overflow: hidden; padding: 0; background: #dfe6f2; border: 1px solid var(--coach-border); box-shadow: var(--coach-shadow-lg); } .coach-photo-card img { display: block; width: 100%; height: auto; object-fit: cover; } .coach-photo-card-large img { aspect-ratio: 16 / 11; } .coach-photo-card-medium img { aspect-ratio: 1 / 1; } .coach-photo-card-tall img { aspect-ratio: 4 / 5; } .coach-photo-copy { align-self: center; } .coach-hero-media .coach-quote-card { display: flex; flex-direction: column; justify-content: center; min-height: 100%; } .coach-hero .coach-photo-card { background: rgba(255,255,255,.08); border-color: rgba(255,255,255,.14); } .coach-hero-simple { align-items: center; } .coach-hero-simple .wp-block-column:first-child > *:last-child { margin-bottom: 0; } .coach-hero-simple .wp-block-column:last-child { position: relative; } .coach-hero-image-wrap { position: relative; max-width: 34rem; margin-left: auto; } .coach-hero-image-wrap .coach-photo-card { border-radius: 32px; overflow: hidden; } .coach-hero-image-wrap .coach-photo-card img { aspect-ratio: 4 / 5; min-height: 100%; } .coach-hero-note { position: absolute; left: -1.2rem; bottom: 1.2rem; max-width: 17rem; padding: 1rem 1.05rem; border-radius: 22px; background: rgba(12, 21, 48, 0.88); border: 1px solid rgba(255,255,255,.14); box-shadow: 0 22px 60px rgba(7, 12, 28, .28); backdrop-filter: blur(12px); } .coach-hero-note strong, .coach-hero-note p { color: #fff; } .coach-hero-note strong { display: block; font-size: 1rem; margin-bottom: .35rem; } .coach-hero-note p { margin: 0; font-size: .94rem; line-height: 1.5; color: rgba(255,255,255,.82); } @media (max-width: 900px) { .coach-hero-image-wrap { max-width: none; margin-left: 0; } .coach-hero-note { position: static; margin-top: 1rem; max-width: none; } } @media (max-width: 781px) { .coach-photo-row { grid-template-columns: 1fr; } } .coach-system-card h3, .coach-service-card h3, .coach-process-card h3, .coach-faq-card h3, .coach-story-card h3, .coach-testimonial-card h3, .coach-mini-card h3, .coach-blog-card h3 { margin-top: .35rem; margin-bottom: .6rem; } .coach-stat strong { display: block; font-size: clamp(1.4rem, 3vw, 2.15rem); color: var(--coach-text); } .coach-stat span, .coach-muted, .coach-service-card p, .coach-process-card p, .coach-faq-card p, .coach-story-card p, .coach-system-card p, .coach-blog-card p, .coach-testimonial-meta, .coach-form-wrap p, .coach-section p, .coach-quote-card p, .coach-mini-card p { color: var(--coach-muted); } .coach-hero .coach-panel p, .coach-hero .coach-quote-card p, .coach-hero .coach-visual-card p, .coach-hero .coach-badge.dark + h3 + p { color: rgba(255,255,255,.82); } .coach-service-card ul, .coach-process-card ul, .coach-story-card ul, .coach-system-card ul { margin: .8rem 0 0 1rem; } .coach-icon-dot { display: inline-flex; align-items: center; justify-content: center; width: 2.4rem; height: 2.4rem; border-radius: 50%; background: rgba(84,104,255,.11); color: var(--coach-primary); font-weight: 800; } .coach-form-wrap { padding: 1.55rem; background: rgba(255,255,255,.96); } .coach-form-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 1rem; } .coach-form-grid .full { grid-column: 1 / -1; } .coach-form-wrap label { display: block; font-weight: 700; margin-bottom: .4rem; color: var(--coach-text); } .coach-form-wrap input, .coach-form-wrap textarea, .coach-form-wrap select { width: 100%; border: 1px solid rgba(20,32,51,.12); border-radius: 16px; padding: .9rem 1rem; font-size: 1rem; background: #fff; color: var(--coach-text); } .coach-form-wrap textarea { min-height: 140px; } .coach-form-wrap button { border: 0; background: linear-gradient(135deg, var(--coach-primary), #7f56d9); color: #fff; cursor: pointer; box-shadow: 0 18px 30px rgba(84,104,255,.24); } .coach-alert { border-radius: 16px; padding: .95rem 1rem; margin-bottom: 1rem; font-weight: 600; } .coach-alert.success { background: rgba(19,199,184,.12); color: #0e7067; border: 1px solid rgba(19,199,184,.2); } .coach-alert.error { background: rgba(255,107,129,.10); color: #8d2d3b; border: 1px solid rgba(255,107,129,.18); } .coach-testimonial-grid blockquote { margin: 0; } .coach-testimonial-card .coach-rating { color: #f5a524; letter-spacing: .18em; font-size: .95rem; margin-bottom: .7rem; } .coach-cta-band { padding: 1.6rem; background: linear-gradient(135deg, rgba(84,104,255,.10), rgba(19,199,184,.10)), #fff; border: 1px solid rgba(84,104,255,.12); border-radius: var(--coach-radius); box-shadow: var(--coach-shadow); } .coach-stack > * + * { margin-top: 1rem; } .coach-inline-link { display: inline-flex; align-items: center; justify-content: center; color: var(--coach-primary); background: rgba(84,104,255,.08); } .coach-admin-link { display: inline-flex; align-items: center; gap: .5rem; margin-top: .5rem; color: var(--coach-primary); text-decoration: none; font-weight: 700; } .coach-footer-note { text-align: center; color: var(--coach-muted); font-size: .95rem; margin-top: 2rem; } .coach-blog-card a, .coach-blog-card .wp-block-post-excerpt__more-link, .wp-block-post-excerpt__more-link, .wp-block-read-more { color: var(--coach-primary); font-weight: 700; text-decoration: none; } body.coaching-mvp-active .wp-block-post-template { gap: 1.2rem; } body.coaching-mvp-active .wp-block-post-template > li, body.coaching-mvp-active .wp-block-post { border-radius: var(--coach-radius); background: rgba(255,255,255,.94); border: 1px solid var(--coach-border); box-shadow: var(--coach-shadow); padding: 1.25rem; } body.coaching-mvp-active .wp-block-post-featured-image img { border-radius: 18px; } body.coaching-mvp-active .wp-block-query-title, body.coaching-mvp-active .wp-block-post-title a { color: var(--coach-text); text-decoration: none; } body.coaching-mvp-active .wp-block-query-pagination { margin-top: 1.2rem; } body.coaching-mvp-active .wp-block-query-pagination a { color: var(--coach-primary); text-decoration: none; } @media (max-width: 781px) { .coach-hero { padding: 1.5rem; } body.coaching-mvp-active header.wp-block-template-part { position: static; } } CSS; wp_add_inline_style('coaching-mvp-inline', $css); } add_action('wp_enqueue_scripts', 'coaching_mvp_styles'); function coaching_mvp_home_content() { return <<<'HTML'

Premium Coaching Template • Booking-first architecture

A premium coaching template that future AI models can customize without rebuilding the foundation.

This starter is built to feel like a paid template: strong hero, real booking flow, editable services, dynamic testimonials, simple WordPress blog, and lead capture already wired into the conversion path.

  • Reusable template shell, not a one-off personal brand site
  • All must-have pages for coaching offers are already structured
  • Future customization can focus on niche, voice, offer, and visuals
Template objective

Start from a premium base, then tailor it for the next coaching client.

Replace the story, offer names, testimonials, and palette later — keep the expensive-looking structure now.

Booking live

Pay-later booking flow

Requests are stored in WordPress admin for manual follow-up.

Social proof

Editable testimonials system

Homepage and testimonials page both pull from the same content type.

Content engine

Simple core blog

WordPress posts are already positioned as the lightweight content layer.

1:1Private coaching space tailored to your goals, pace, and leadership context.
VirtualSessions designed to fit demanding schedules across time zones and work rhythms.
FocusedEach conversation ends with clearer priorities, stronger decisions, and practical next steps.
GroundedSupport rooted in real conversations, real pressure, and real professional transitions.

How we can work together

Coaching support for leadership, transitions, and high-pressure moments

Whether you need space to think strategically, prepare for a difficult conversation, or navigate a major transition, the work is designed to help you move forward with more clarity and steadiness.

01

Leadership clarity

Step back from the noise, identify what matters most, and lead with stronger intention.

02

Decision support

Work through complex choices with a calm, structured process that reduces second-guessing.

03

Career transitions

Navigate promotions, role changes, pivots, and new responsibilities with more confidence.

04

Communication & presence

Strengthen how you show up in conversations, meetings, feedback, and high-stakes moments.

05

Team dynamics

Untangle friction, improve collaboration, and lead people with more steadiness and care.

06

Burnout prevention

Build more sustainable ways of working without losing ambition, standards, or momentum.

07

Ongoing support

Create a consistent space for reflection, accountability, and practical growth over time.

Ways to work together

Choose the level of support that fits this season

[coaching_services limit="3"]

For first conversations

Start with a low-pressure call if you want to explore fit, goals, and what kind of support would help most.

For focused momentum

Book a deeper session when you need clarity around a decision, transition, or leadership challenge.

For ongoing support

Choose a longer-term rhythm if you want reflection, accountability, and steady progress over time.

Ready to begin?

Take the next step in a way that feels clear and manageable

If you already know you want support, book a session. If you have questions first, the services page will help you choose the right starting point.

Book a session View services

1

Choose a starting point

Select the option that matches your current challenge, level of urgency, and preferred pace.

2

Share your context

Use the booking form to outline what is happening, what feels stuck, and what kind of support you need.

3

Move forward with clarity

You will leave with clearer next steps, stronger perspective, and a more grounded plan for what comes next.

About the work

Grounded, strategic coaching for people carrying real responsibility

A calm space for honest thinking

This work is designed for moments when the pressure is high, the stakes are real, and quick answers are not enough. Coaching creates room to sort signal from noise, make stronger decisions, and move forward in a way that feels aligned.

Learn more about the approach

Clarity

Make sense of competing priorities, difficult choices, and the patterns that keep pulling attention in too many directions.

Presence

Strengthen communication, steadiness, and self-trust so you can lead with more intention under pressure.

Momentum

Turn reflection into practical next steps that feel realistic, thoughtful, and sustainable over time.

Client reflections

What clients often take away from this work

[coaching_testimonials limit="3"]

Insights & articles

Short reflections on clarity, leadership, and sustainable momentum

[coaching_recent_posts limit="3"]
Get in touch

Not sure where to start?

If you have a question, want help choosing the right format, or prefer a gentler first step, send a note and we can begin there.

Visit the contact page

[coaching_lead_form]
HTML; } function coaching_mvp_services_content() { return <<<'HTML'

Coaching services

Services designed to feel premium, clear, and easy to customize later

This page is the reusable offer layer of the template: clear service cards, premium positioning, and enough structure for future AI customization without page rebuilding.

[coaching_services limit="4"]
Who this is for

Built for founders, professionals, leaders, and experts in transition

These cards work equally well for executive coaching, mindset coaching, business coaching, career transition work, and niche-specific premium offers.

What each offer should do

Reduce hesitation and make the next step obvious

Each service helps visitors self-select the right level of support, then move directly into booking or lead capture.

01

Clarify the need

Use one service for discovery, one for depth, one for continuity, and one for premium escalation.

02

Frame the value

Premium service pages make the experience feel contained, specific, and safe to say yes to.

03

Route to action

All roads should lead to booking or contact — not to dead-end informational copy.

Ready to adapt these offers for a real coach or niche?

Use the booking page if the service structure is already clear, or the contact page if you want a softer first step.

Book now Ask a question

HTML; } function coaching_mvp_testimonials_content() { return <<<'HTML'

Testimonials system

A reusable proof system that future AI models can rewrite without touching the layout

This page is powered by a dedicated Testimonials content type in WordPress. Replace sample quotes later, and both this page and the homepage will update automatically.

[coaching_testimonials limit="6"]

Editable from admin

Add, remove, or reorder testimonials in WordPress without changing page content.

Supports premium positioning

Use role labels to add context like founder, executive, creative leader, or high-performance client.

Shared across template

The same testimonial source powers key proof moments across the site.

Need to manage sample proof now?

Add new testimonials in the WordPress admin and they will automatically appear here.

Manage testimonials →

HTML; } function coaching_mvp_about_content() { return <<<'HTML'

About the coach

An about page with enough depth to build trust, but enough flexibility to customize for many coaching niches

This page is the trust layer of the template. It is designed to hold founder story, method, philosophy, credentials, and emotional reassurance without becoming cluttered.

Starter story

Replace with a real founder narrative later

Use this area for the coach’s turning point, philosophy, client promise, or the problem they are uniquely good at helping solve.

Book a session

Philosophy

Clarity before noise. Direction before pressure. Action without performative hustle.

Experience

Space for credentials, lived experience, certifications, or industry-specific credibility.

Client experience

Explain how sessions feel: direct, calm, strategic, supportive, practical, or deeply reflective.

01

Listen deeply

The coach should feel perceptive, not generic.

02

Create direction

Move from emotional fog or strategic overload into an honest next path.

03

Support action

Ground ideas into behavior, decisions, rhythm, and follow-through.

Trust pages should always hand visitors a next move

Point them to services, booking, or testimonials so the about page supports conversion instead of acting like a dead end.

Explore services

HTML; } function coaching_mvp_booking_content() { return <<<'HTML'

Booking system

Request a session through a clean, premium booking experience

This template uses a pay-later booking request flow. It is intentionally simple, lightweight, and easy to replace later with Calendly or another scheduling tool.

[coaching_booking_form]

What happens next

The coach reviews the request inside WordPress, then follows up manually to confirm fit, timing, and session details.

Why this works for a template

It delivers a real booking system now without locking the starter into one external platform or workflow.

Admin review

Every request is stored in a dedicated Bookings section in the dashboard.

View bookings →

Recommended future upgrades

Calendly embed, Stripe-powered paid session flow, confirmation emails, or service-specific funnels.

HTML; } function coaching_mvp_contact_content() { return <<<'HTML'

Lead capture

Open a lower-friction conversation for visitors who are not ready to book yet

This page is the secondary conversion path. It captures thoughtful leads who need clarity, have questions, or want a recommendation before choosing an offer.

[coaching_lead_form]

Best use cases

Service selection questions, founder introductions, budget-fit conversations, or slower trust-building journeys.

Why it matters

Not every premium buyer wants to jump straight into a booking flow on the first visit.

Admin review

Every lead appears in a dedicated Leads section for easy follow-up.

View leads →

Suggested future add-ons

CRM sync, email automation, lead scoring, or a niche-specific qualification form.

HTML; } function coaching_mvp_template_pages() { return [ 'home' => [ 'title' => 'Home', 'content' => coaching_mvp_home_content(), ], 'services' => [ 'title' => 'Services', 'content' => coaching_mvp_services_content(), ], 'testimonials' => [ 'title' => 'Testimonials', 'content' => coaching_mvp_testimonials_content(), ], 'about' => [ 'title' => 'About', 'content' => coaching_mvp_about_content(), ], 'book-session' => [ 'title' => 'Book Session', 'content' => coaching_mvp_booking_content(), ], 'contact' => [ 'title' => 'Contact', 'content' => coaching_mvp_contact_content(), ], 'blog' => [ 'title' => 'Blog', 'content' => '', ], ]; } function coaching_mvp_upsert_page($slug, $definition) { $page = get_page_by_path($slug, OBJECT, 'page'); $postarr = [ 'post_title' => $definition['title'], 'post_name' => $slug, 'post_type' => 'page', 'post_status' => 'publish', 'post_content' => $definition['content'], ]; if ($page) { $postarr['ID'] = $page->ID; wp_update_post($postarr); return (int) $page->ID; } return (int) wp_insert_post($postarr); } function coaching_mvp_seed_navigation($page_ids) { $nav = get_page_by_title('Primary Navigation', OBJECT, 'wp_navigation'); $nav_content = sprintf( "\n" . "\n" . "\n" . "\n" . "\n" . "\n" . "\n" . "", $page_ids['home'], $page_ids['services'], $page_ids['testimonials'], $page_ids['about'], $page_ids['blog'], $page_ids['book-session'], $page_ids['contact'] ); $postarr = [ 'post_title' => 'Primary Navigation', 'post_status' => 'publish', 'post_type' => 'wp_navigation', 'post_content' => $nav_content, ]; if ($nav) { $postarr['ID'] = $nav->ID; wp_update_post($postarr); return; } wp_insert_post($postarr); } function coaching_mvp_seed_testimonials() { $items = [ [ 'title' => 'Jordan Ellis — Sample', 'role' => 'Founder, advisory studio', 'content' => 'I came in overwhelmed and spread thin. The coaching process helped me narrow the signal, make cleaner decisions, and finally move with conviction instead of noise.', 'menu_order' => 1, ], [ 'title' => 'Maya Chen — Sample', 'role' => 'Senior leader, technology team', 'content' => 'What felt different was the balance of calm and challenge. I left each session with clearer priorities, stronger boundaries, and next steps I could actually execute.', 'menu_order' => 2, ], [ 'title' => 'Daniel Ross — Sample', 'role' => 'Executive coaching client', 'content' => 'This gave me the structure I was missing. Instead of collecting more insight, I built momentum and followed through on decisions I had delayed for months.', 'menu_order' => 3, ], [ 'title' => 'Alina Patel — Sample', 'role' => 'Creative founder, growth stage brand', 'content' => 'The sessions felt premium, focused, and deeply useful. I had space to think, but also enough accountability to convert clarity into action.', 'menu_order' => 4, ], ]; foreach ($items as $item) { $existing = get_page_by_title($item['title'], OBJECT, 'testimonial'); $postarr = [ 'post_type' => 'testimonial', 'post_status' => 'publish', 'post_title' => $item['title'], 'post_content' => $item['content'], 'menu_order' => $item['menu_order'], ]; if ($existing) { $postarr['ID'] = $existing->ID; $post_id = wp_update_post($postarr); } else { $post_id = wp_insert_post($postarr); } if ($post_id && !is_wp_error($post_id)) { update_post_meta($post_id, '_testimonial_role', $item['role']); } } } function coaching_mvp_seed_blog_posts() { $posts = [ [ 'title' => 'How Clarity Creates Better Decisions', 'slug' => 'how-clarity-creates-better-decisions', 'content' => "Decision fatigue usually does not come from too few options. It comes from too many open loops. A good coaching conversation reduces noise, clarifies what matters now, and turns vague pressure into an honest next move.\n\nThoughtful content like this helps visitors feel the pace and tone of the work before they ever book. A simple blog can quietly build trust, authority, and familiarity without pulling attention away from the next step.", ], [ 'title' => 'When High Performers Need Structure, Not More Pressure', 'slug' => 'when-high-performers-need-structure-not-more-pressure', 'content' => "Many coaching clients do not need more motivation. They need better structure, cleaner priorities, and an environment that supports follow-through.\n\nWriting like this can support clients between sessions and help new visitors understand the kind of coaching relationship they are stepping into.", ], [ 'title' => 'A Better Rhythm for Coaching Between Insight and Action', 'slug' => 'a-better-rhythm-for-coaching-between-insight-and-action', 'content' => "Great coaching is not just about reflection. It is also about timing, pacing, and what happens after the session ends.\n\nArticles like this can hold practical reflection, grounded encouragement, and the kind of calm guidance clients can expect in the work itself.", ], ]; foreach ($posts as $item) { $existing = get_page_by_path($item['slug'], OBJECT, 'post'); $postarr = [ 'post_type' => 'post', 'post_status' => 'publish', 'post_title' => $item['title'], 'post_name' => $item['slug'], 'post_content' => $item['content'], ]; if ($existing) { $postarr['ID'] = $existing->ID; wp_update_post($postarr); } else { wp_insert_post($postarr); } } } function coaching_mvp_seed_template_content() { if (get_option('coaching_mvp_template_version') === COACHING_MVP_TEMPLATE_VERSION) { return; } $page_ids = []; foreach (coaching_mvp_template_pages() as $slug => $definition) { $page_ids[$slug] = coaching_mvp_upsert_page($slug, $definition); } if (!empty($page_ids['home'])) { update_option('show_on_front', 'page'); update_option('page_on_front', $page_ids['home']); } if (!empty($page_ids['blog'])) { update_option('page_for_posts', $page_ids['blog']); } coaching_mvp_seed_navigation($page_ids); coaching_mvp_seed_testimonials(); coaching_mvp_seed_blog_posts(); update_option('coaching_mvp_template_version', COACHING_MVP_TEMPLATE_VERSION, false); flush_rewrite_rules(false); } add_action('init', 'coaching_mvp_seed_template_content', 30); function coaching_mvp_sanitize_textarea($value) { return trim(wp_strip_all_tags((string) $value)); } function coaching_mvp_handle_forms() { if ($_SERVER['REQUEST_METHOD'] !== 'POST' || empty($_POST['coaching_form_action'])) { return; } $action = sanitize_key(wp_unslash($_POST['coaching_form_action'])); $redirect = !empty($_POST['_wp_http_referer']) ? wp_unslash($_POST['_wp_http_referer']) : home_url('/'); $redirect = remove_query_arg(['booking_status', 'lead_status'], $redirect); if (!isset($_POST['coaching_form_nonce']) || !wp_verify_nonce(wp_unslash($_POST['coaching_form_nonce']), 'coaching_form_submit')) { wp_safe_redirect(add_query_arg($action === 'booking' ? 'booking_status' : 'lead_status', 'error', $redirect)); exit; } $name = sanitize_text_field(wp_unslash($_POST['name'] ?? '')); $email = sanitize_email(wp_unslash($_POST['email'] ?? '')); $phone = sanitize_text_field(wp_unslash($_POST['phone'] ?? '')); $message = coaching_mvp_sanitize_textarea(wp_unslash($_POST['message'] ?? '')); if (!$name || !$email) { wp_safe_redirect(add_query_arg($action === 'booking' ? 'booking_status' : 'lead_status', 'error', $redirect)); exit; } if ($action === 'booking') { $service = sanitize_text_field(wp_unslash($_POST['service'] ?? 'Discovery Call')); $preferred_date = sanitize_text_field(wp_unslash($_POST['preferred_date'] ?? '')); $preferred_time = sanitize_text_field(wp_unslash($_POST['preferred_time'] ?? '')); $format = sanitize_text_field(wp_unslash($_POST['session_format'] ?? 'Zoom')); $goal = coaching_mvp_sanitize_textarea(wp_unslash($_POST['goal'] ?? '')); $post_id = wp_insert_post([ 'post_type' => 'booking_request', 'post_status' => 'private', 'post_title' => sprintf('%s — %s', $name, $preferred_date ?: current_time('Y-m-d')), ], true); if (is_wp_error($post_id)) { wp_safe_redirect(add_query_arg('booking_status', 'error', $redirect)); exit; } update_post_meta($post_id, '_booking_name', $name); update_post_meta($post_id, '_booking_email', $email); update_post_meta($post_id, '_booking_phone', $phone); update_post_meta($post_id, '_booking_service', $service); update_post_meta($post_id, '_booking_date', $preferred_date); update_post_meta($post_id, '_booking_time', $preferred_time); update_post_meta($post_id, '_booking_format', $format); update_post_meta($post_id, '_booking_goal', $goal); update_post_meta($post_id, '_booking_message', $message); wp_safe_redirect(add_query_arg('booking_status', 'success', $redirect)); exit; } if ($action === 'lead') { $focus = sanitize_text_field(wp_unslash($_POST['focus'] ?? '')); $company = sanitize_text_field(wp_unslash($_POST['company'] ?? '')); $post_id = wp_insert_post([ 'post_type' => 'lead_capture', 'post_status' => 'private', 'post_title' => sprintf('%s — %s', $name, current_time('Y-m-d H:i')), ], true); if (is_wp_error($post_id)) { wp_safe_redirect(add_query_arg('lead_status', 'error', $redirect)); exit; } update_post_meta($post_id, '_lead_name', $name); update_post_meta($post_id, '_lead_email', $email); update_post_meta($post_id, '_lead_phone', $phone); update_post_meta($post_id, '_lead_company', $company); update_post_meta($post_id, '_lead_focus', $focus); update_post_meta($post_id, '_lead_message', $message); wp_safe_redirect(add_query_arg('lead_status', 'success', $redirect)); exit; } } add_action('template_redirect', 'coaching_mvp_handle_forms', 1); function coaching_mvp_booking_form_shortcode() { $status = isset($_GET['booking_status']) ? sanitize_key(wp_unslash($_GET['booking_status'])) : ''; ob_start(); ?>
Thanks — your booking request was received. You can review it anytime in the WordPress admin under Bookings.
Please complete the required fields and try again.
Book a pay-later session

Request your coaching session

Pick the service, preferred date, and format. This template stores requests in WordPress so the coach can confirm details personally.

Thanks — your message was captured and is now visible in the WordPress admin under Leads.
Please add your name and email so we can respond properly.
Get in touch

Start with a note

Share a little context and you can receive a thoughtful reply about the best next step.

4], $atts, 'coaching_services'); $limit = max(1, (int) $atts['limit']); $catalog = array_slice(coaching_mvp_service_catalog(), 0, $limit, true); ob_start(); echo '
'; foreach ($catalog as $service) { echo '
'; echo '' . esc_html($service['code']) . ''; echo '

' . esc_html($service['label']) . '

'; echo '

' . esc_html($service['summary']) . '

'; echo ''; echo '
'; } echo '
'; return ob_get_clean(); } add_shortcode('coaching_services', 'coaching_mvp_services_shortcode'); function coaching_mvp_testimonials_shortcode($atts = []) { $atts = shortcode_atts(['limit' => 6], $atts, 'coaching_testimonials'); $items = get_posts([ 'post_type' => 'testimonial', 'post_status' => 'publish', 'numberposts' => (int) $atts['limit'], 'orderby' => 'menu_order date', 'order' => 'ASC', ]); if (!$items) { return '

No testimonials yet.

'; } ob_start(); echo '
'; foreach ($items as $item) { $role = get_post_meta($item->ID, '_testimonial_role', true); echo '
'; echo '
★★★★★
'; echo '

' . esc_html(wp_strip_all_tags($item->post_content)) . '

'; echo '

' . esc_html(get_the_title($item)) . '

'; if ($role) { echo '
' . esc_html($role) . '
'; } echo '
'; } echo '
'; return ob_get_clean(); } add_shortcode('coaching_testimonials', 'coaching_mvp_testimonials_shortcode'); function coaching_mvp_recent_posts_shortcode($atts = []) { $atts = shortcode_atts(['limit' => 3], $atts, 'coaching_recent_posts'); $items = get_posts([ 'post_type' => 'post', 'post_status' => 'publish', 'numberposts' => (int) $atts['limit'], 'orderby' => 'date', 'order' => 'DESC', ]); if (!$items) { return '

No blog posts yet.

'; } ob_start(); echo '
'; foreach ($items as $item) { echo '
'; echo 'Blog'; echo '

' . esc_html(get_the_title($item)) . '

'; echo '

' . esc_html(wp_trim_words(wp_strip_all_tags($item->post_content), 26)) . '

'; echo 'Read article →'; echo '
'; } echo '
'; return ob_get_clean(); } add_shortcode('coaching_recent_posts', 'coaching_mvp_recent_posts_shortcode'); function coaching_mvp_admin_columns($columns, $post_type) { if ($post_type === 'booking_request') { return [ 'cb' => $columns['cb'], 'title' => 'Booking', 'service' => 'Service', 'date' => 'Date', 'contact' => 'Contact', 'format' => 'Format', ]; } if ($post_type === 'lead_capture') { return [ 'cb' => $columns['cb'], 'title' => 'Lead', 'focus' => 'Focus', 'contact' => 'Contact', 'date' => 'Received', ]; } if ($post_type === 'testimonial') { $columns['role'] = 'Role'; return $columns; } return $columns; } add_filter('manage_booking_request_posts_columns', fn($columns) => coaching_mvp_admin_columns($columns, 'booking_request')); add_filter('manage_lead_capture_posts_columns', fn($columns) => coaching_mvp_admin_columns($columns, 'lead_capture')); add_filter('manage_testimonial_posts_columns', fn($columns) => coaching_mvp_admin_columns($columns, 'testimonial')); function coaching_mvp_render_admin_column($column, $post_id) { switch ($column) { case 'service': echo esc_html((string) get_post_meta($post_id, '_booking_service', true)); break; case 'date': if (get_post_type($post_id) === 'booking_request') { $date = get_post_meta($post_id, '_booking_date', true); $time = get_post_meta($post_id, '_booking_time', true); echo esc_html(trim($date . ' ' . $time)); } else { echo esc_html(get_the_date('Y-m-d H:i', $post_id)); } break; case 'contact': $email_key = get_post_type($post_id) === 'booking_request' ? '_booking_email' : '_lead_email'; $phone_key = get_post_type($post_id) === 'booking_request' ? '_booking_phone' : '_lead_phone'; echo esc_html((string) get_post_meta($post_id, $email_key, true)); $phone = get_post_meta($post_id, $phone_key, true); if ($phone) { echo '
' . esc_html((string) $phone); } break; case 'format': echo esc_html((string) get_post_meta($post_id, '_booking_format', true)); break; case 'focus': echo esc_html((string) get_post_meta($post_id, '_lead_focus', true)); break; case 'role': echo esc_html((string) get_post_meta($post_id, '_testimonial_role', true)); break; } } add_action('manage_booking_request_posts_custom_column', 'coaching_mvp_render_admin_column', 10, 2); add_action('manage_lead_capture_posts_custom_column', 'coaching_mvp_render_admin_column', 10, 2); add_action('manage_testimonial_posts_custom_column', 'coaching_mvp_render_admin_column', 10, 2); function coaching_mvp_details_meta_box() { foreach (['booking_request', 'lead_capture'] as $post_type) { add_meta_box('coaching-mvp-details', 'Submission Details', 'coaching_mvp_details_meta_box_html', $post_type, 'normal', 'high'); } add_meta_box('coaching-mvp-testimonial-role', 'Testimonial Details', 'coaching_mvp_testimonial_meta_box_html', 'testimonial', 'side'); } add_action('add_meta_boxes', 'coaching_mvp_details_meta_box'); function coaching_mvp_details_meta_box_html($post) { if ($post->post_type === 'booking_request') { $fields = [ 'Name' => get_post_meta($post->ID, '_booking_name', true), 'Email' => get_post_meta($post->ID, '_booking_email', true), 'Phone' => get_post_meta($post->ID, '_booking_phone', true), 'Service' => get_post_meta($post->ID, '_booking_service', true), 'Preferred date' => get_post_meta($post->ID, '_booking_date', true), 'Preferred time' => get_post_meta($post->ID, '_booking_time', true), 'Format' => get_post_meta($post->ID, '_booking_format', true), 'Goal' => get_post_meta($post->ID, '_booking_goal', true), 'Extra notes' => get_post_meta($post->ID, '_booking_message', true), ]; } else { $fields = [ 'Name' => get_post_meta($post->ID, '_lead_name', true), 'Email' => get_post_meta($post->ID, '_lead_email', true), 'Phone' => get_post_meta($post->ID, '_lead_phone', true), 'Company / role' => get_post_meta($post->ID, '_lead_company', true), 'Focus area' => get_post_meta($post->ID, '_lead_focus', true), 'Message' => get_post_meta($post->ID, '_lead_message', true), ]; } echo '
'; foreach ($fields as $label => $value) { echo '

' . esc_html($label) . ':
' . nl2br(esc_html((string) $value)) . '

'; } echo '
'; } function coaching_mvp_testimonial_meta_box_html($post) { wp_nonce_field('coaching_testimonial_meta', 'coaching_testimonial_meta_nonce'); $role = get_post_meta($post->ID, '_testimonial_role', true); echo '

'; echo ''; echo '

Example: Founder, Sample Client

'; } function coaching_mvp_save_testimonial_meta($post_id) { if (!isset($_POST['coaching_testimonial_meta_nonce']) || !wp_verify_nonce(wp_unslash($_POST['coaching_testimonial_meta_nonce']), 'coaching_testimonial_meta')) { return; } if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) { return; } if (isset($_POST['coaching_testimonial_role'])) { update_post_meta($post_id, '_testimonial_role', sanitize_text_field(wp_unslash($_POST['coaching_testimonial_role']))); } } add_action('save_post_testimonial', 'coaching_mvp_save_testimonial_meta'); function coaching_mvp_current_request_origin() { if (defined('WP_CLI') && WP_CLI) { return null; } $host = ''; if (!empty($_SERVER['HTTP_X_FORWARDED_HOST'])) { $parts = explode(',', (string) $_SERVER['HTTP_X_FORWARDED_HOST']); $host = trim(end($parts)); } elseif (!empty($_SERVER['HTTP_HOST'])) { $host = trim((string) $_SERVER['HTTP_HOST']); } if ($host === '' || preg_match('/[^a-z0-9\-\.:\[\]]/i', $host)) { return null; } $scheme = 'http'; if (!empty($_SERVER['HTTP_X_FORWARDED_PROTO'])) { $parts = explode(',', (string) $_SERVER['HTTP_X_FORWARDED_PROTO']); $candidate = strtolower(trim(end($parts))); if (in_array($candidate, ['http', 'https'], true)) { $scheme = $candidate; } } elseif (!empty($_SERVER['REQUEST_SCHEME']) && in_array($_SERVER['REQUEST_SCHEME'], ['http', 'https'], true)) { $scheme = $_SERVER['REQUEST_SCHEME']; } elseif (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') { $scheme = 'https'; } return $scheme . '://' . $host; } function coaching_mvp_should_replace_local_host($url) { $host = wp_parse_url($url, PHP_URL_HOST); return in_array($host, ['localhost', '127.0.0.1', '::1'], true); } function coaching_mvp_replace_local_origin($url) { $origin = coaching_mvp_current_request_origin(); if (!$origin || !coaching_mvp_should_replace_local_host($url)) { return $url; } $path = (string) wp_parse_url($url, PHP_URL_PATH); $query = wp_parse_url($url, PHP_URL_QUERY); $fragment = wp_parse_url($url, PHP_URL_FRAGMENT); $rebuilt = rtrim($origin, '/') . $path; if ($query) { $rebuilt .= '?' . $query; } if ($fragment) { $rebuilt .= '#' . $fragment; } return $rebuilt; } function coaching_mvp_filter_option_home($value) { return coaching_mvp_replace_local_origin((string) $value); } add_filter('option_home', 'coaching_mvp_filter_option_home'); add_filter('option_siteurl', 'coaching_mvp_filter_option_home'); function coaching_mvp_filter_generated_url($url) { return coaching_mvp_replace_local_origin((string) $url); } add_filter('home_url', 'coaching_mvp_filter_generated_url', 10, 1); add_filter('site_url', 'coaching_mvp_filter_generated_url', 10, 1); add_filter('content_url', 'coaching_mvp_filter_generated_url', 10, 1); add_filter('plugins_url', 'coaching_mvp_filter_generated_url', 10, 1); add_filter('includes_url', 'coaching_mvp_filter_generated_url', 10, 1); add_filter('rest_url', 'coaching_mvp_filter_generated_url', 10, 1); add_filter('network_home_url', 'coaching_mvp_filter_generated_url', 10, 1); add_filter('network_site_url', 'coaching_mvp_filter_generated_url', 10, 1); function coaching_mvp_replace_local_origin_in_html($html) { $origin = coaching_mvp_current_request_origin(); if (!$origin || !is_string($html) || $html === '') { return $html; } return str_replace( ['http://localhost', 'https://localhost', 'http://127.0.0.1', 'https://127.0.0.1'], $origin, $html ); } function coaching_mvp_filter_rendered_block_html($block_content) { if (is_admin()) { return $block_content; } return coaching_mvp_replace_local_origin_in_html($block_content); } add_filter('render_block', 'coaching_mvp_filter_rendered_block_html', 10, 1);