KI-Generierung
Dieser Leitfaden erklärt, wie ThemeForge-Attribute auf HTML-Elementen platziert werden, damit der Generator ein WordPress-Theme mit einem voll funktionsfähigen Admin-Panel erstellen kann.
Du kannst diese Seite mit jedem KI-Assistenten (ChatGPT, Claude, Gemini usw.) teilen, damit er die Regeln lesen und Attribute korrekt platzieren kann.
Schick deinen KI-Assistenten an diese Adresse: Er liest die Platzierungsregeln direkt aus der Quelle — dieselben, nach denen der Generator dein Markup bewertet. Zuerst kommt ein kurzes Inhaltsverzeichnis, danach jedes Regelmodul auf Anfrage.
Arbeitsabläufe
Es gibt verschiedene Wege, ThemeForge-Attribute zu verwenden, abhängig von deinem Ausgangspunkt und deinen Tools.
1. KI generiert eine Seite mit Attributen
Für: Benutzer mit einem Design (Figma, Entwurf, Referenz)
Teile diesen Seitenlink mit deinem KI-Assistenten zusammen mit deinem Design. Die KI generiert HTML mit bereits platzierten Attributen. Du prüfst den Bericht, forderst Korrekturen an und generierst das Theme.
- Gib deiner KI den Link zu diesem Leitfaden + dein Design (Figma-URL, Screenshots, Referenz)
- KI generiert HTML mit allen Attributen nach den Regeln
- Prüf den Attributbericht — pass bei Bedarf an
- Generiere das WordPress-Theme über ThemeForge
2. KI fügt Attribute zu bestehendem HTML hinzu
Für: Entwickler mit fertigem HTML (Webflow-Export, Template, handcodiert)
Du hast bereits HTML ohne ThemeForge-Attribute. Teile diesen Leitfaden mit deiner KI und bitte sie, das HTML zu analysieren und Attribute zu platzieren.
- Gib deiner KI den Link zu diesem Leitfaden + deine HTML-Dateien
- KI analysiert die Struktur und fügt Attribute auf Texte, Bilder, Links hinzu
- Prüf den Bericht — die KI weiß nicht immer, welche Elemente dekorativ sind
- Validierung ausführen, Probleme beheben, Theme generieren
3. Manuelle Platzierung im Webflow Designer
Für: erfahrene Webflow-Benutzer, die volle Kontrolle bevorzugen
Füg benutzerdefinierte Attribute direkt im Webflow Designer hinzu (Element-Einstellungen → Custom Attributes). Exportiere die Seite und validiere vor der Theme-Generierung.
- Element in Webflow auswählen → Settings → Custom Attributes
- Attributnamen (z.B. fld-text) und Wert (z.B. Heading) hinzufügen
- Seite exportieren (Code Export oder .webflow.io)
- Validierung ausführen und Theme generieren
Vollständiger Zyklus
Unabhängig von der Methode ist der Prüfzyklus schnell — kein Import in Webflow oder Installation auf WordPress nur zur Attributprüfung nötig:
- Attribute platzieren (KI oder manuell)
- Bericht ausführen — Baum in Sekunden prüfen
- Nicht zufrieden? → KI sagen, was zu ändern ist → erneut Bericht
- Validierung ausführen — auf Fehler prüfen
- WordPress-Theme generieren
Ready-Made AI Prompts
Copy a prompt below and paste it into your AI assistant (ChatGPT, Claude, Gemini) along with the link to this guide. The AI will follow the attribute rules automatically.
Prompt A: Add attributes to existing HTML
Use this when you already have an HTML site and need to add ThemeForge attributes.
I have a finished HTML website that I want to convert into a WordPress theme with an editable admin panel, using ThemeForge.
Read the placement rules and follow them exactly. Start here — it names the rule modules and tells you what to do first:
https://themeforge.pro/ai
Always pull the `core` module; if you are generating the site from scratch, pull `build` too. Then add what this site needs (pages, blog, cpt, woocommerce, deploy).
Then add ThemeForge attributes to every piece of editable content in my HTML:
- Each visual section = a tab + group pair; short headings/labels = text, paragraphs and long wrapping headings = textarea, images on
tags, links as a URL + text pair.
- Repeating cards (features, team, FAQ) = a repeater with 2+ rows.
- Header, footer, navigation, logo and contacts = site-wide options.
- If my site is multilingual, mark the language switcher with wp-menu="Language" and do NOT hardcode any visible text — every label must be a field (each language has its own value).
- Keep image/file paths as they are; do not skip any visible text.
[Add your specific requirements here: which pages, WooCommerce / blog support, languages, etc.]
When done, follow the Final Delivery steps: create the theme-options page with ALL option fields, serve the files locally, and give me the complete list of page URLs to paste into ThemeForge.
Prompt B: Generate HTML with attributes from scratch
Use this when you want the AI to create an HTML site from a design (Figma, screenshot, description) with ThemeForge attributes already included.
I need you to generate an HTML website with ThemeForge attributes already in place, ready for WordPress theme generation.
Read the placement rules and follow them exactly. Start here — it names the rule modules and tells you what to do first:
https://themeforge.pro/ai
Always pull the `core` module; if you are generating the site from scratch, pull `build` too. Then add what this site needs (pages, blog, cpt, woocommerce, deploy).
Here is my design: [ATTACH YOUR FIGMA LINK / SCREENSHOTS / DESCRIPTION]
Generate clean, semantic HTML + CSS and place ThemeForge attributes on all editable content as you build each section (not as a separate pass):
- Each section = a tab + group pair; text vs textarea by line count; images on
; links as a URL + text pair; repeating cards as a repeater with 2+ rows.
- Header/footer/navigation/contacts = site-wide options.
- For a multilingual site, mark the language switcher with wp-menu="Language" and keep every visible string as a field (no hardcoded text).
Use real placeholder content (not lorem ipsum) so data import populates real fields.
[Add your specific requirements here: colors, fonts, number of pages, WooCommerce / blog, languages, etc.]
When done, follow the Final Delivery steps: create the theme-options page with ALL option fields, serve the files locally, and give me the complete list of page URLs to paste into ThemeForge.
Tips for Better Results
- Für Prompt B: Füg so viel visuellen Kontext wie möglich hinzu — Screenshots, Figma-Links, Referenzseiten. Je mehr Kontext, desto besser das Ergebnis.
- Du kannst die Prompts mit eigenen Anforderungen erweitern: Farbschema, Schriftarten, bestimmte Abschnitte, Seitenanzahl, WooCommerce-Unterstützung usw.
- Bitte die KI nach Abschluss, die Website in einem lokalen Ordner bereitzustellen und zu starten — füg dann die lokale URL in ThemeForge ein, um das WordPress-Theme zu generieren.
- Der Guide-Link ist bereits im Prompt enthalten. Die KI liest die vollständigen Attributregeln direkt von der Seite.
- Mehrsprachige Website? Markiere Inhalte normal — ein Feldname speichert alle Sprachen; verdrahte den Umschalter mit wp-menu=„Language“. Siehe den Abschnitt „Mehrsprachige Websites“.
- Gib jedem Feld einen EINDEUTIGEN Namen in seinem Bereich — verwende nie den Namen einer Sektion für einen Repeater darin, sonst überleben Link und Bild nicht beide.
Attribut-Präfixe
| Prefix | Scope | Description |
|---|---|---|
fld-* | Per-page | Seitenfelder — Inhalt, der für EINE Seite einzigartig ist (Hero-Text, Seitenbilder) |
opt-* | Site-wide | Seitenweite Optionen — Inhalt, der auf ALLEN Seiten gleich ist (Telefon, E-Mail, Logo) |
tax-* | Taxonomy | Taxonomie-Felder — Inhalt auf Kategorie-/Tag-Archivseiten |
wp="..." | WP Core | WordPress-Kern — dynamische WP-Daten (Beitragstitel, Datum, Beitragsbild) |
wp-fields-group="..." | Sections | Sektions-Gruppierung — gruppiert Felder in Admin-Panel-Sektionen (Metaboxen) |
Feldtyp-Zuordnung
| Attribute | Field | HTML Element | Example |
|---|---|---|---|
fld-text | Text | <h1>-<h6>, <p>, <div> | <h2 fld-text="Heading"> |
fld-area | Textarea | <p>, <div> | <p fld-area="Description"> |
fld-image | Image | <img> only | <img fld-image="Photo"> |
fld-bg-image | BG Image | Any element | <div fld-bg-image="BG"> |
fld-link | Link | <a> only | <a fld-link="Button"> |
fld-editor | Rich editor | <div> | <div fld-editor="Content"> |
fld-loop | Repeater | Wrapper <div> | <div fld-loop="Items"> |
fld-group | Group | Container | <div fld-group="Hero"> |
fld-layouts | Section builder | Wrapper <div> | <div fld-layouts="Page Sections"> |
fld-layout | Section type | Direct child | <section fld-layout="Hero"> |
layout-preview | Preview control | On fld-layout | layout-preview="off" |
fld-tab | Tab | Empty <div> | <div fld-tab="Hero" wp="delete-element"> |
fld-show | Toggle (show) | Wrapper <div> | <div fld-show="Show CTA"> |
fld-hide | Toggle (hide) | Wrapper <div> | <div fld-hide="Hide CTA"> |
fld-gallery | Gallery | Wrapper <div> | <div fld-gallery="Photos"> |
Replace fld- with opt- for site-wide options. Full reference: Attribut-Referenz
Platzierungsregeln
Sektionen & Tabs
fld-tab muss auf einem separaten leeren <div> stehen, NICHT auf demselben Element wie fld-group. Platziere es als Geschwisterelement VOR der Gruppe.
<!-- ONE wp-fields-group per page on <body> -->
<body wp-fields-group="Home Page">
<!-- Tab = empty sibling BEFORE the group -->
<div fld-tab="Hero" wp="delete-element" class="tab-div"></div>
<section fld-group="Hero" class="hero">
<h1 fld-text="Heading">Welcome</h1>
<p fld-area="Description">...</p>
</section>
<div fld-tab="Features" wp="delete-element" class="tab-div"></div>
<section fld-group="Features" class="features">
...
</section>
</body>
Links — immer ein Paar
Jeder Link MUSS sowohl ein Link-Attribut als auch ein Text-Attribut haben, unter ZWEI Namen — fld-link="X" auf <a>, fld-text="X text" auf einem Kind-<div>. Ein Name für beide lässt ein Feld URL und Beschriftung zugleich speisen. Telefon/E-Mail: nur opt-phone-link / opt-email-link — ein Attribut füllt href und sichtbaren Text. Ausnahme: Icon-Links ohne sichtbaren Text.
<!-- CORRECT: fld-link on <a>, fld-text on child, two names -->
<a fld-link="CTA" href="/shop" class="btn w-inline-block">
<div fld-text="CTA text">Shop Now</div>
</a>
<!-- Phone/email: one attribute fills both href and text -->
<a opt-phone-link="Phone" href="tel:...">+1 234 567</a>
Bilder
fld-image gehört NUR auf <img>-Tags. fld-bg-image auf jedes Element mit Hintergrundbild.
<img fld-image="Hero Image" src="images/hero.jpg" alt="Hero" />
<div fld-bg-image="Background" style="background-image:url('img/bg.jpg')"></div>
Repeater
ALLE Kinder innerhalb von fld-loop MÜSSEN dieselben ThemeForge-Attribute haben. Verwende unterschiedlichen Text und Bilder in jeder Zeile.
<div fld-loop="Team" class="team-grid">
<div class="card">
<img fld-image="Photo" src="images/avatar-1.jpg" />
<h3 fld-text="Name">John Doe</h3>
</div>
<!-- Row 2: SAME attributes, DIFFERENT content -->
<div class="card">
<img fld-image="Photo" src="images/avatar-2.jpg" />
<h3 fld-text="Name">Jane Smith</h3>
</div>
</div>
Seitenweite Optionen
Elemente auf jeder Seite (Telefon, E-Mail, Logo, Adresse) sollten opt-* statt fld-* verwenden.
<!-- Header: site-wide, use opt-* -->
<img opt-image="Logo" src="images/logo.png" />
<!-- Navigation: a repeater of link + caption rows (NOT wp-menu) -->
<nav opt-loop="Nav links" class="nav">
<div class="nav-item">
<a opt-link="Link" href="/about" class="nav-link w-inline-block">
<div opt-text="Link text">About</div>
</a>
</div>
…
</nav>
<!-- Footer: contacts — one attribute each -->
<a opt-phone-link="Phone" href="tel:...">+1 234 567</a>
<a opt-email-link="Email" href="mailto:...">info@site.com</a>
<p opt-text="Address">123 Main St</p>
Menüs
<!-- Navigation: an opt-loop of link + caption rows (preferred) -->
<nav opt-loop="Nav links" class="nav">
<div class="nav-item">
<a opt-link="Link" href="/" class="nav-link w-inline-block">
<div opt-text="Link text">Home</div>
</a>
</div>
<div class="nav-item">
<a opt-link="Link" href="/about" class="nav-link w-inline-block">
<div opt-text="Link text">About</div>
</a>
</div>
</nav>
<!-- Language switcher (Polylang): use wp-menu -->
<div wp-menu="Language" class="lang-switcher">
<a href="/en" class="lang-link">EN</a>
<a href="/ua" class="lang-link">UA</a>
</div>
Benennung — jeder Name eindeutig
Innerhalb eines Bereichs muss jeder Feldname eindeutig sein. ThemeForge schlüsselt Felder nach Namen, daher kollidieren zwei verschiedene Felder mit demselben Namen — eines geht still verloren.
- Gib einem Repeater (fld-loop) NIEMALS denselben Namen wie der Sektion oder Gruppe, in der er liegt — benenne den Repeater nach seinen Zeilen (z. B. „Zähler-Karten“), nicht wie die Sektion („Zähler“).
- Ein Link und sein Bild oder Text am selben Ort brauchen UNTERSCHIEDLICHE Namen — z. B. opt-link=„Logo-Link“ + opt-image=„Logo“, nicht beide „Logo“.
- Denselben Namen nur absichtlich wiederverwenden (Repeater-Zeilen, show/hide-Schalter). Der Konverter meldet versehentliche Namenskonflikte in den Projekt-Logs.
<!-- WRONG: repeater reuses its section/group name -->
<section fld-group="Counters">
<div fld-loop="Counters"> ... </div>
</section>
<!-- RIGHT: distinct names -->
<section fld-group="Counters">
<div fld-loop="Counter cards"> ... </div>
</section>
Mehrsprachige Websites (Polylang / WPML)
Hat die Quelle zwei oder mehr Sprachen (einen Umschalter, Sprachcodes wie ua/ru/en oder pro Sprache duplizierte Seiten), ist sie mehrsprachig. ThemeForge erkennt Polylang oder WPML automatisch — das Markup ist identisch. Nur zwei Dinge unterscheiden sich von einer einsprachigen Website:
- Der Sprachumschalter verwendet wp-menu=„Language“ — das Sprach-Plugin fügt die Locale-Links ein.
- Jedes Inhaltsfeld speichert einen Wert PRO Sprache. Verwende EINEN Feldnamen (z. B. fld-text=„Überschrift“) — erstelle NICHT „Überschrift EN“ / „Überschrift RU“. Der Eigentümer bearbeitet jede Sprache im Admin und der Importer befüllt jede Locale.
Sprachumschalter — das Rezept
<!-- Dropdown: toggle shows the CURRENT language (an options field),
the list is a connected wp-menu="Language" (locales injected) -->
<div opt-hide="Hide language switcher" class="lang-drop w-dropdown">
<div class="lang-dt w-dropdown-toggle">
<div opt-text="Current language">UA</div>
</div>
<nav class="lang-drop-list w-dropdown-list">
<div wp-menu="Language" class="lang-switcher">
<a href="/en"><div>ENG</div></a>
<a href="/ru"><div>РУС</div></a>
</div>
</nav>
</div>
<!-- Simple variant: a flat list of language links -->
<ul wp-menu="Language" class="header__languages">
<li><a href="/">UA</a></li>
<li><a href="/ru/">RU</a></li>
<li><a href="/en/">EN</a></li>
</ul>
Globale opt-*-Felder (Telefon, Adresse, Navigationsbeschriftungen) sind ebenfalls pro Sprache, sodass Kopf-/Fußzeile jeder Locale unterschiedlich sein können. Markiere sie wie üblich mit opt-* — kein Mehraufwand.
Auf einer mehrsprachigen Website NICHT:
- sichtbaren Text hartcodieren — er wird unübersetzbar; alles wird ein Feld;
- ein Feld pro Sprache anlegen — ein Name, das CMS speichert ihn pro Locale;
- die Links innerhalb von wp-menu=„Language“ auszeichnen — das Plugin ersetzt sie durch eigene Locale-Links.
Erkennungstipp: ein Sprachumschalter in Kopf-/Fußzeile (Flaggen oder ua/ru/en-Codes) oder URL-Präfixe /ru/… und /en/… bedeuten, die Website ist mehrsprachig — verdrahte den Umschalter mit wp-menu=„Language“ und erwarte Inhalte pro Locale. Eine einsprachige Website braucht das nicht.
Was NICHT markiert werden soll
- Dekorative Elemente: Trennlinien, Abstandshalter, Hintergrund-Overlays, SVG-Icons
- Strukturelle Wrapper: Grid-Container, Flex-Wrapper, Layout-Gerüst
- Navigationslinks innerhalb von wp-menu (WordPress verwaltet diese)
- Statische UI-Labels: „Preis:", „Menge:", Tabellenüberschriften
- UI-Icons: Suche, Warenkorb, Chevrons, Pfeile
- Footer-Standardtext: „Alle Rechte vorbehalten", Copyright-Jahr
Faustregel: Wenn der Seitenbetreiber diesen Text/dieses Bild im Admin-Panel ändern möchte — Attribut setzen. Wenn es UI-Dekoration ist — überspringen.
Checkliste
- Jede wp-fields-group-Sektion hat einen eindeutigen, verständlichen Namen
- Alle Repeater-Kinder haben identische Attribute mit unterschiedlichem Inhalt
- Bilder verwenden <img>-Tags wo möglich
- Jeder Link hat BEIDE Attribute: Link + Text (fld-link + fld-text, opt-phone-link + opt-text usw.)
- Footer-Kontakte verwenden opt-* (Optionen), nicht fld-*
- Tab-Divs sind leere Geschwister mit wp="delete-element"
- Keine Attribute auf dekorativen/strukturellen Elementen
- Labels sind verständlich, auf Englisch
Required Pages & Slugs
The file name (slug) determines which WordPress template is generated. Some pages are required, others depend on the site type (blog, shop).
theme-options.html — REQUIRED
You MUST create this page. It contains ALL opt-* fields used across the site (logo, navigation, phone, email, address, social links, copyright). Add wp-fields-group="Theme Options" on <body> and organize fields with opt-tab. Without this page, option fields will NOT appear in the WordPress admin panel.
<!-- theme-options.html -->
<body wp-fields-group="Theme Options">
<div opt-tab="Header" wp="delete-element" class="tab-div"></div>
<img opt-image="Logo" src="images/logo.png" />
<nav opt-loop="Nav links" class="nav">
<div class="nav-item">
<a opt-link="Link" href="/about" class="nav-link w-inline-block">
<div opt-text="Link text">About</div>
</a>
</div>
<div class="nav-item">
<a opt-link="Link" href="/contacts" class="nav-link w-inline-block">
<div opt-text="Link text">Contacts</div>
</a>
</div>
</nav>
<div opt-tab="Footer" wp="delete-element" class="tab-div"></div>
<a opt-phone-link="Phone" href="tel:...">+1 234 567</a>
<a opt-email-link="Email" href="mailto:...">info@site.com</a>
<p opt-text="Address">123 Main St</p>
<div opt-text="Copyright">© Company</div>
</body>
Slug → Template Mapping
Use these exact file names. Custom pages (about, services, contacts, etc.) can use any slug that doesn't conflict with the reserved names below.
| File name | WP template | When to use |
|---|---|---|
index.html | index.php | Home page (required) |
about.html | about.php | Custom page — any slug |
single.html | single.php | Single blog post (blog sites) |
archive.html | archive.php | Blog posts list (blog sites) |
404.html | 404.php | Not found page |
search-page.html | search.php | Search results |
single-product.html | single-product.php | Single product (WooCommerce) |
archive-product.html | archive-product.php | Product catalog (WooCommerce) |
taxonomy-product-cat.html | taxonomy-product-cat.php | Product category archive (WooCommerce) |
page-cart.html | page-cart.php | Cart (WooCommerce) |
page-checkout.html | page-checkout.php | Checkout (WooCommerce) |
page-wishlist.html | page-wishlist.php | Wishlist (WooCommerce) |
page-my-account.html | page-my-account.php | My account (WooCommerce) |
single-{type}.html | single-{type}.php | Custom post type — single / archive |
theme-options.html | — | Site-wide options (admin panel only, no template) |
Final Delivery — Do NOT Skip
After generating all pages with attributes, you MUST complete these steps:
- Create theme-options.html with ALL opt-* fields (see above)
- Save all HTML files to a single folder. Tell the user the folder name
- Give the user the complete list of ALL page slugs (filenames without .html), ready to paste into the ThemeForge generator page list:
- Leg in ThemeForge ein Projekt an, setz das Häkchen „Die Quelle wird auf der Website hochgeladen“, füg die Seitenliste ein und lade das Blanko-Theme herunter. Installiere es in WordPress, lade das ZIP-Archiv deiner Website unter „ThemeForge → Quelle“ (eigener Menüpunkt in der Admin-Seitenleiste) hoch und klick auf „Theme aus dem Projekt aktualisieren“.
index, about, services, contacts, theme-options
tf-cors.php
Optional: Wenn deine Website bereits über eine localhost-Adresse ausgeliefert wird, kannst du im Projekt diese Adresse angeben, statt das Archiv auf der Website hochzuladen (siehe „Quelle auf deiner Website“). Leg diese Datei im Stammverzeichnis der Website an und starte den Server mit: php -S localhost:8080 tf-cors.php. Nur themeforge.pro ist zugelassen — keine andere Website erhält Zugriff auf deine Dateien.
<?php
// ThemeForge CORS Router — place in site root, run: php -S localhost:8080 tf-cors.php
$allowed = ['https://themeforge.pro', 'https://www.themeforge.pro', 'http://localhost:8081'];
$origin = $_SERVER['HTTP_ORIGIN'] ?? '';
if (in_array($origin, $allowed, true)) header('Access-Control-Allow-Origin: ' . $origin);
elseif (empty($origin)) header('Access-Control-Allow-Origin: https://themeforge.pro');
header('Access-Control-Allow-Methods: GET, OPTIONS');
header('Access-Control-Allow-Headers: Content-Type');
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') { http_response_code(204); exit; }
$path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
$file = __DIR__ . $path;
if (is_dir($file)) $file = rtrim($file, '/') . '/index.html';
if (!is_file($file) && is_file($file . '.html')) $file .= '.html';
if (is_file($file)) {
$ext = strtolower(pathinfo($file, PATHINFO_EXTENSION));
$types = ['html'=>'text/html','css'=>'text/css','js'=>'application/javascript','json'=>'application/json',
'png'=>'image/png','jpg'=>'image/jpeg','jpeg'=>'image/jpeg','gif'=>'image/gif','svg'=>'image/svg+xml',
'webp'=>'image/webp','ico'=>'image/x-icon','woff'=>'font/woff','woff2'=>'font/woff2','ttf'=>'font/ttf'];
if (isset($types[$ext])) header('Content-Type: ' . $types[$ext]);
readfile($file); return true;
}
http_response_code(404); echo '404 Not Found';
Kurzreferenz
PAGE: <body wp-fields-group="Page Name"> (ONE per page)
TAB: <div fld-tab="Section" wp="delete-element" class="tab-div"></div>
GROUP: <section fld-group="Section"> (ALWAYS after each tab)
TEXT: <h2 fld-text="Heading">...</h2>
TEXTAREA: <p fld-area="Description">...</p>
IMAGE: <img fld-image="Photo" src="..." />
BG IMAGE: <div fld-bg-image="BG" style="background-image:url(...)">
LINK+TEXT: <a fld-link="Btn"><div fld-text="Btn text">Click</div></a>
REPEATER: <div fld-loop="Items"> (all children = same attrs)
BUILDER: <div fld-layouts="Page Sections"><section fld-layout="Hero">
(client picks section types; previews are automatic)
optional: layout-preview="off" | layout-preview="images/x.jpg"
TOGGLE: <div fld-show="Show X"> or <div fld-hide="Hide X">
NAV LINKS: <nav opt-loop="Nav links"><div><a opt-link="Link"><div opt-text="Link text">...</div></a></div>…</nav>
OPTIONS: opt-text, opt-image, opt-link, opt-phone-link, opt-email-link
LANG SWITCH: <div wp-menu="Language"> (Polylang only)
POST LOOP: <div wp-query="'post_type'=>'post','posts_per_page'=>3">
PRODUCTS: <div wp-product-query="'post_type'=>'product','posts_per_page'=>4">
CONDITION: <div wp-if="on_sale">
Markup prüfen
Bevor du die Website übergibst, sende alle Seiten an die kostenlose Prüfung. Sie führt den echten Parser des Generators aus — ohne Konto, nichts wird gespeichert — und listet auf, was der Generator beanstanden würde: error macht das Theme kaputt, warning bedeutet, dass etwas stillschweigend wegfällt, hint ist gut zu wissen. Wiederhole, bis die Antwort "ok": true lautet.
POST /api/validate-markup
Sende den ganzen Satz in einer Anfrage: Einige Prüfungen betreffen den Satz, nicht eine Datei — ob es theme-options.html gibt, ob die Startseite dabei ist.
POST https://themeforge.pro/api/validate-markup
Content-Type: application/json
{"pages":[
{"name":"index.html","html":"<!doctype html>…"},
{"name":"about.html","html":"…"},
{"name":"theme-options.html","html":"…"}
]}
Fortgeschritten — KI-Agent + Webflow MCP
Die beiden Prompts oben funktionieren mit jeder KI auf einer fertigen HTML-Seite. Wenn du in Webflow baust, kannst du dieselben Attribute direkt im Designer mit einem KI-Agenten (z. B. Claude Code) und verbundenem Webflow MCP setzen — dieselben Regeln, kein Kopieren und Einfügen.
- Derselbe Kanon: Die Platzierungsregeln auf dieser Seite sind die einzige Quelle der Wahrheit für beide Wege.
- In beiden Fällen ist das Ergebnis ein Satz ausgezeichneter Seiten, den du an den ThemeForge-Generator übergibst (eine veröffentlichte *.webflow.io-URL oder ein lokaler HTML-Ordner).