Frontmatter Solo — WordPress
Build in Astro.
Ship PHP templates for WordPress.
Solo reads your Astro project and generates plain PHP templates and a variable contract for WordPress integration.
Plain PHP output · WordPress-compatible structure · $49 one-time
Frontmatter Solo generates templates and a variable contract from your Astro project. Backend integration (data fetching, routing, CMS wiring) remains your responsibility.
You built a clean Astro frontend.
The WordPress developer needs PHP templates.
Someone has to translate every component by hand.
Solo generates the PHP template structure.
<!-- Astro component --> <Hero headline="Welcome to our site" sub="We build things that last." ctaLabel="Get in touch" ctaHref="/contact/" />
<?php // partials/hero.php — generated by FM Solo ?>
<section class="hero hero--left">
<h1><?= htmlspecialchars($fm['props']['headline']) ?></h1>
<?php if (!empty($fm['props']['sub'])): ?>
<p><?= htmlspecialchars($fm['props']['sub']) ?></p>
<?php endif; ?>
<?php if (!empty($fm['props']['ctaLabel'])): ?>
<a href="<?= htmlspecialchars($fm['props']['ctaHref']) ?>">
<?= htmlspecialchars($fm['props']['ctaLabel']) ?>
</a>
<?php endif; ?>
</section> <?php
// page-home.php — you write this, Solo does not generate it
// Solo generates: partials/hero.php, layouts/base.php, INTEGRATION.md
// Your responsibility: populate $fm from your data source
$fm = [
'props' => [
'headline' => get_field('hero_headline'), // ACF, post meta, etc.
'sub' => get_field('hero_sub'),
'ctaLabel' => get_field('hero_cta_label'),
'ctaHref' => get_field('hero_cta_href'),
]
];
include get_template_directory() . '/partials/hero.php'; No framework lock-in
Plain PHP, no dependencies
The output is vanilla PHP includes. No templating engine. Works with any WordPress setup — classic themes, hybrid, ACF, custom fields.
Clean variable contract
Every prop documented
The generated INTEGRATION.md lists every PHP variable expected by every template. Your WordPress developer knows exactly what to wire in.
Workflow
One command, full output
Run frontmatter solo:build --adapter php. Get pages, partials, layouts, manifest, and integration guide — Use these templates inside your WordPress theme and connect them to your data sources.
Build-time only
No runtime dependency
Solo runs once, at build time. The output is static files. Your WordPress installation doesn't know or care that Astro was involved.
What gets generated
output/ ├─ pages/ │ └─ page-home.php ├─ layouts/ │ └─ base.php ├─ partials/ │ ├─ hero.php │ ├─ section.php │ └─ footer.php ├─ manifest.json └─ INTEGRATION.md
Drop the partials/ and layouts/ folders into your WordPress theme. Wire the variables to your custom fields or post meta.
Frequently asked questions
What does Solo generate for WordPress?
Solo generates PHP partials, layouts, and page template stubs, plus manifest.json and INTEGRATION.md. It does not generate functions.php, WordPress hooks, get_field() calls, or any WordPress-specific logic. Your developer writes the data wiring.
What is the $fm variable?
Solo uses a fixed data contract. Partials expect $fm['props']. Pages and layouts expect $fm['site'], $fm['page'], and $fm['data']. Your WordPress page template populates $fm before including the generated partial. INTEGRATION.md documents every key expected.
Do I need ACF to use the generated templates?
No. The templates use $fm['props'] which you populate however you like — ACF, post meta, WP_Query, or hardcoded values. Solo does not generate any WordPress-specific data fetching.
Does Solo work with a headless WordPress setup?
Solo is for traditional server-rendered PHP themes. For headless WordPress with Astro as the renderer, you don't need Solo — that architecture keeps Astro rendering.
Does Solo require a specific Astro project structure?
Yes. Solo requires a constrained project: one layout per page, literal props only, global CSS, static images from public/. Run npx @withfrontmatter/solo-check first to check compatibility for free.
Free · Open source
Check compatibility before you buy.
solo-check is a free CLI validator. It scans your Astro project against the Solo contract and tells you exactly what is and isn't compatible before you purchase anything. Use --help-ai if you want the packaged AI workflow.
npx @withfrontmatter/solo-check
✓ Command copied
Example output
✓ src/pages/index.astro — OK
✓ src/layouts/Base.astro — OK
E201 src/pages/contact.astro:13 Non-literal props used in component Hero.
Fix: Use only string, number, boolean, or null props in Solo v1.
──────────────────────────────────────────
1 error · 0 warnings
Tip: use the AI workflow to fix these errors automatically.
npx @withfrontmatter/solo-check --help-ai
────────────────────────────────────────── Exit 0 means your project is ready for Solo. Use npx @withfrontmatter/solo-check --help-ai if you want the packaged AI fixing workflow. View on GitHub ↗
$49
One-time purchase. No subscription.
- CLI — macOS, Linux, Windows (Node)
- Desktop app — macOS 12+ · Apple Silicon
- Plain PHP output — WordPress-compatible structure
- Twig output included
- Starter reference project included
- INTEGRATION.md auto-generated
Provided as-is. No guarantee of compatibility with all Astro projects or WordPress setups. Support is best-effort.
WordPress-specific logic (functions.php, hooks, ACF, queries) is not generated.
Also works with
- Custom PHP CMS
- Legacy PHP codebases
- Any PHP backend without a templating engine