=== real. Edit ===
Contributors: workwithreal
Tags: custom fields, theme editor, client editing, manifest, carbon fields alternative
Requires at least: 6.0
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 1.1.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Verwandelt vibecodete WordPress-Themes in kundeneditierbare Websites — der moderne Carbon-Fields-Ersatz.

== Description ==

Workflow: Du vibecodest die Website mit Claude, aus dem Theme wird eine WordPress-Website, und real. Edit macht alle Inhalte für den Kunden editierbar — ohne dass er das Design kaputtbekommen kann.

* Eine real-sections.json im Theme beschreibt alle editierbaren Felder
* Templates lesen Inhalte über rs() / rs_img() / rs_rows() / rs_html() — eine Funktion, fertig
* Texte direkt auf der Website ändern: anklicken, tippen, Enter — für angemeldete Redakteure
* Globale Angaben (Telefon, E-Mail, Adresse): einmal bearbeiten, überall
* Mehrere Seiten: jede Seite eigene Felder, Reiter in der Verwaltung
* Feldtypen: Text, mehrzeiliger Text, Link, Bild, Auswahl (auch aus Taxonomie), Galerie, Wiederholfeld
* Collections: Kunden legen Projekte, Leistungen oder Artikel an — auf von dir vorgebauten Templates (Custom Post Types aus dem Manifest), mit Beitragsbild, Sortierung, Suche
* Custom-Sektionen: vibecodete Partials, die der Kunde pro Seite ausfüllt — und mit Pro einsetzt, sortiert und entfernt
* Neue Seiten aus Blueprints anlegen (Pro)
* Live-Vorschau der echten Website beim Bearbeiten — ohne zu speichern
* Backup: Export/Import aller Kundeninhalte als JSON, automatische Sicherung des letzten Stands
* Bilder werden als Mediathek-ID gespeichert: srcset, eigene Bildgrößen, Domainwechsel ohne Verlust
* Free/Pro-Lizenzmodell (Agentur- oder Endkunden-Schlüssel), offline geprüft
* WP-CLI: wp real-edit check | export | import | migrate | status | instructions

== Installation ==

1. Plugin aktivieren
2. real-sections.json ins Theme legen (Claude schreibt sie mit — Anleitung in AGENTS.md im Plugin-Ordner oder `wp real-edit instructions`)
3. Template-Inhalte über rs('key') ausgeben

== Frequently Asked Questions ==

= Wo liegen die Inhalte des Kunden? =

In der Datenbank (Option `rs_content`, Composer-Struktur in `rs_page_sections`, Collection-Einträge als eigene Beiträge mit `_rs_data`). Theme-Dateien enthalten nur Design und Vorgaben. Vor jedem Deployment unter „Backup" exportieren.

= Was passiert, wenn ich ein Feld aus dem Manifest entferne? =

Der gespeicherte Wert bleibt in der Datenbank, wird aber nirgends mehr angezeigt. Die Verwaltung warnt Administratoren („Kundeninhalt verwaist"). Keys nie umbenennen, wenn Inhalte daran hängen.

= Der Kunde hat versehentlich etwas gelöscht. =

Unter „Backup" → „Letzten Stand zurückholen" liegt automatisch der Stand vor dem letzten Speichern. Für alles Ältere: ein exportiertes Backup importieren.

= Funktionieren alte Themes mit real_sections_*()-Aufrufen weiter? =

Ja. Die Lesefunktionen aus real. Sections (0.x) bleiben als Aliase erhalten.

= Was ist Pro? =

Free: alle Felder bearbeiten, Collection-Einträge anlegen, Sektionstexte ändern. Pro: Sektionen hinzufügen, verschieben und entfernen, neue Seiten aus Blueprints anlegen, eigener Menüname (Whitelabel). Der Schlüssel wird offline mit einer Ed25519-Signatur geprüft (PHP-Erweiterung Sodium); nichts telefoniert nach Hause.

== Changelog ==

= 1.1.0 =
* Neu: Texte direkt auf der Website bearbeiten — angemeldete Redakteure schalten unten rechts „✎ Texte bearbeiten" ein, klicken einen Text, ändern ihn, Enter speichert (Esc bricht ab). Erkannt wird jeder Text, der genau einem Feld entspricht; Themes können Elemente mit `rs_attr('key')` fest markieren
* Neu: Feldtyp `richtext` (formatierter Text mit dem WordPress-Editor) für Impressum, Datenschutz, Cookie-Hinweise; Ausgabe mit `rs_html()`
* Neu: Verwaltung mit Seitenleiste statt Reiterleiste — Überall · Seiten (+ Seite anlegen) · Vorlagen & Bausteine (Manifest `"group": "vorlagen"`) · Einträge; jede Ansicht mit klarer Überschrift; am Handy als Auswahlliste
* Vorschau im Rahmen zeigt keine Stifte und keine Bearbeiten-Leiste mehr (body-Klasse `rs-preview` für Themes)
* Listen der Einträge: Kopfzeile mit Titel, Suche und „+ hinzufügen" rechts

= 1.0.1 =
* Neu: Feldtyp `checkbox` (Häkchen, Wert "1"/"") und `select` mit `posts:"collection"` (Auswahl aus den Einträgen einer Collection, Wert = Slug)
* Neu: Bearbeiten von der Website aus — Stift an jeder Sektion für angemeldete Redakteure, `rs_stift('key')` fürs Theme, „✎ Website anpassen" in der Adminleiste; jedes Feld hat eine Sprungadresse (`#rsf-key`), die Verwaltung scrollt hin und hebt es hervor
* Whitelabel neu: der Markenname steckt im Lizenzschlüssel (`keygen.php --brand`), kein Eingabefeld mehr im Backend — das Plugin erscheint in Plugin-Liste und Seitentiteln unter dem Namen der Agentur; Menü bleibt „Website anpassen"
* `wp real-edit check` warnt, wenn ein Manifest keine Sektionen/Blueprints registriert (Pro hätte nichts zum Arbeiten); AGENTS.md fordert: jede gebaute Sektion als Vorlage registrieren
* Kauf-Link für Pro kommt aus Konstante/Filter (`REAL_EDIT_CHECKOUT_URL`), nicht mehr aus einem Feld

= 1.0.0 =
* Umbenennung abgeschlossen: Ordner real-edit, Hauptdatei real-edit.php, Konstanten REAL_EDIT_*, Textdomain real-edit; real_sections_*()-Lesefunktionen bleiben als Aliase
* Neu: „Seite hinzufügen" aus dem Dashboard (Pro) — Titel + Blueprint oder leere Seite, eigener Reiter, Löschen in den Papierkorb
* Neu: Wiederholfelder auf Seiten/global über rs_rows(); rs_image() liefert <img> mit srcset; rs_gallery(), rs_img_id(), rs_field_raw(), rs_field_gallery_ids()
* Neu: Zeilen im Wiederholfeld verschieben; Hilfetext (`help`) an jedem Feld; „Auf Vorgabe zurücksetzen"
* Neu: Backup sichert vor jedem Speichern den letzten Stand („Letzten Stand zurückholen"); Export enthält Einstellungen und angelegte Seiten
* Neu: Lizenzseite mit Whitelabel-Name und Kauf-Link; wp real-edit migrate / status
* Sicherheit: Lizenzschlüssel Ed25519-signiert (libsodium) — der private Schlüssel liegt nur im Keygen, im Plugin steckt nur der öffentliche; Backup-Import läuft durch denselben Sanitizer wie Formulareingaben; Upload-Prüfung, Größenlimit; Silence-Dateien in allen Ordnern
* Englische Oberfläche (en_US) mitgeliefert
* Automatische Updates: Kundeninstallationen holen neue Versionen von workwithreal.com (plugin-update-checker, MIT)
* Behoben: Wiederholfeld verlor beim Speichern alle Zeilen bis auf eine (Index war fest 0)
* Behoben: Live-Vorschau zeigte keine ungespeicherten Werte (Feldnamen rsf[] statt rsf_)
* Behoben: globale Felder fehlten im Feldregister — Vorgaben griffen nicht, Vorschau ließ sie nicht durch
* Behoben: Feld ließ sich nicht leeren (leer galt als „Vorgabe anzeigen")
* Behoben: Galerie-IDs wurden beim Speichern zu „http://123"
* Behoben: Beitragsbild aus Bild-ID setzen; Taxonomie-Zuordnung lässt sich wieder entfernen; Taxonomie-Werte als Slug
* Behoben: Sektionstexte ließen sich ohne Pro nicht speichern
* Behoben: Collections erschienen doppelt im Menü; Permalinks 404 bis zum manuellen Speichern; Sortierfeld fehlte
* Behoben: undefinierte Konstante REAL_EDIT_FILE (Fatal), doppelte Versions-Konstante, fehlendes rs_post_sections()
* Sauber: v1-Bibliothek und Einstellungen nur ohne Manifest; Stylesheet der v1-Sektionen nur bei Nutzung; keine Adminleiste in der Vorschau; Mediathek als Startansicht des Bildwählers
* i18n: alle Oberflächentexte übersetzbar, languages/real-edit.pot

= 0.5.1 =
* Lizenzsystem: signierte Keys (Agency / Site / Trial), offline-validiert, Domain-Bindung, Ablaufdatum
* Backup: Export/Import aller Kundeninhalte (JSON) + Key-Drift-Warnung im Manifest-Check
* Neue Feldtypen: select (Optionen oder Taxonomie), gallery (Mehrfachauswahl), repeater (dynamische Zeilen, auch mit Bildern)
* Beitragsbild-Flag für Collections, Sortierung per Zahlenfeld, Suche + Blättern in Collections
* Composer: Speichern/Vorschau pro Sektion
* „Für Claude"-Anweisungen: AGENTS.md im Plugin + wp real-edit instructions / check

= 0.4.0 =
* Umbenennung: real. Sections → real. Edit
* Manifest v2: globale Felder, mehrere Seiten, Collections (CPTs), Custom-Sektionen
* Sektionen-Composer mit Pro-Gating (verschieben/hinzufügen/entfernen)
* Lizenzverwaltung (Agency- oder Endkunden-Key)

= 0.2.0 =
* Sektions-Bibliothek mit Live-Editor

= 0.1.0 =
* Erste Version

== Upgrade Notice ==

= 1.0.1 =
Whitelabel-Name und Kauf-Link werden nicht mehr im Backend eingetragen — der Markenname kommt aus dem Lizenzschlüssel. Bestehende Schlüssel bleiben gültig (ohne Marke).

= 1.0.0 =
Bild-URLs werden beim ersten Admin-Aufruf automatisch in Mediathek-IDs umgewandelt. Vorher ein Backup exportieren. Themes mit real_sections_*()-Aufrufen laufen weiter.
