Turn an HTML site into a WordPress theme your client can edit
Mark the texts, images and lists your client should change. ThemeForge builds a classic WordPress theme where each of them is a field in the admin, and you can change the design later without touching their content.
See your WordPress admin before you pay · $20/month · cancel any time · 14-day refund
menu.html
contacts.html
theme-options.html
css/ style.css
assets/ 12 images
page-menu.php
page-contacts.php
Site settings
css/ main.css
fields: 53 · lists: 3
Yes. Give ThemeForge the published URL of your site or upload its folder. Add attributes such as fld-text and fld-loop to the parts your client should edit, and you get a WordPress theme with those parts as admin fields. Pages, styles, images and fonts come along. Content that JavaScript draws in the browser does not, because it is not in the HTML.
The drinks list from a café site, before and after it becomes a theme
Point at a line of markup to see the field it becomes.
<body wp-fields-group="Menu"> <h2 fld-text="Title">Menu</h2> <p fld-area="Lead">Espresso runs on our…</p> <div class="cards" fld-loop="Drinks"> <article class="card"> <img fld-image="Image" src="assets/icon-latte.png"> <h3 fld-text="Name">Latte</h3> <p fld-text="Description">Double espresso…</p> <span fld-text="Price">$4.20</span> </article> …three more cards, marked the same way </div>
Warm Corner, our demo site: 3 pages and a settings page → 4 field groups, 53 fields, 3 lists. The client adds, removes and reorders rows; the design does not change.
What goes in, what comes out
You bring
- Static HTML pages:
index.htmland the rest - CSS, images and fonts on relative paths
- A published URL, or the folder from your disk
- Sites written by Claude, Cursor or ChatGPT
You get
- A classic PHP theme as a ZIP
- A template for every page
- Admin fields for everything you marked
- Site settings from
theme-options.html - Menus and working forms
Good fit
- Company and service sites
- Landing pages and portfolios
- Blogs, catalogs, small shops
- Sites you hand over to a client
Not a fit
- Apps with logins or their own database
- React or Next.js projects as they are
- Pages built for Elementor or Gutenberg
Three steps from a folder of HTML to a site your client runs
- Step 1
Mark up the fields
Open each HTML file and add an attribute to every element the client should change; the attribute reference lists them by task. The free markup check tells you what is missing before you build.
- Step 2
Preview the admin
Point your project at the published URL. About 20 seconds later a full WordPress admin opens in your browser tab, with the pages, the lists and the site settings filled from your HTML.
- Step 3
Install and hand over
Subscribe, download the theme and install it like any other. Later, one button in wp-admin pulls a new build; a failed update rolls back by itself. For a site added as a folder, keep its source on the site to use that button.
The work a developer would otherwise do
| Rebuilding by hand | ThemeForge | |
|---|---|---|
| Templates | Cut every page into PHP files | Generated from your pages |
| Admin fields | Register each field and wire it into the template | One attribute per field, in the HTML |
| Your current text | Retype it into the admin | “Load data” fills the fields from your pages |
| The next redesign | Repeat most of the above | Rebuild the theme; fields and content stay |
| Forms | Install and configure a forms plugin | Your forms work, every entry is saved in the admin |
Know these before you start
Content drawn by JavaScript
If a list or text only appears after a script runs, it is not in the HTML and cannot become a field. Put it into the markup first.
Every row of a list needs its attributes
The first row defines the fields. Mark the other rows the same way, so all of them are imported into the admin.
A renamed field starts empty
Fields are matched by name. Rename one in the markup and the rebuilt theme shows it empty, so keep names stable once the client has filled them.
Install a plugin, and the same markup does more
Built with an AI assistant? Let it do the markup
Give Claude, Cursor or ChatGPT one link. It reads where the attributes go, marks up the site and checks its own work against the same rules the builder uses.
- themeforge.pro/ai · plain-text rules for assistants
- Markup check · free, no account, before you build
- Markup guide · the same rules, written for people
# Tell your assistant Read https://themeforge.pro/ai and mark up this site so the client can edit the menu. # Check the result before building curl -X POST https://themeforge.pro/api/validate-markup \ -H "Content-Type: application/json" \ -d '{"pages":[{"name":"index.html","html":"…"}]}'
Your site lives somewhere else?
- Sign up
- Preview your admin
- Subscribe
- Download and update
Cancel any time · 14-day refund · your site keeps working after you cancel
HTML to WordPress, answered
I change the HTML often. Will the client’s edits survive?
Yes, as long as field names stay the same. The text your client typed lives in WordPress; each new build of the HTML replaces only templates and styles.
Which pages of my site become templates?
The home page always, plus every page you list in the project. Each page becomes a template, and the client can create more pages from any of them; each new page gets its own copy of the fields.
What is theme-options.html for?
Put the things that repeat on every page there: phone, address, social links, footer text. They become one settings screen in the admin instead of a field on every page.
Do my existing texts move into the admin?
Yes. After installing, “Load data” fills the fields with the texts and images from your HTML, so the client starts from the current site, not from empty boxes.
Is it free to try?
The markup check is free without an account; the admin preview needs a free account. Downloading and updating the theme is part of the $20 subscription, with a 14-day refund.