=== APlug SnippetZentrale ===
Contributors: aplug
Tags: code snippets, header footer, php, css, javascript
Requires at least: 6.4
Tested up to: 6.8
Requires PHP: 8.1
Stable tag: 2.1.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Verwaltet PHP-, CSS-, JavaScript- und HTML-Snippets global im Header, Body oder Footer, im Inhalt oder per Shortcode – mit Revisionen, Safe Mode und Audit.

== Description ==

APlug SnippetZentrale ersetzt lose Theme-Anpassungen und unübersichtliche Header-/Footer-Codefelder durch eine zentrale, revisionsfähige Verwaltung. Die Gratisversion ist dauerhaft vollständig nutzbar. Eine getrennte Premium-Erweiterung ergänzt Freigabeprozesse, Zeitpläne und Compliance-Berichte.

= Globale Ausspielung =

Snippets können auf der gesamten öffentlichen Website oder im gesamten WordPress-Backend ausgeführt werden:

* Global im Website-Header über `wp_head`.
* Global direkt nach dem öffnenden Body über `wp_body_open`.
* Global im Website-Footer über `wp_footer`.
* Global im Backend-Header oder Backend-Footer.
* Vor oder nach dem Hauptinhalt einzelner Seiten und Beiträge.
* HTML ausschließlich per Shortcode `[aplug_snippet id="123"]`.
* PHP an dokumentierten WordPress-Hooks wie `init`, `wp`, `wp_head`, `wp_body_open`, `wp_footer`, `admin_init`, `admin_head` und `admin_footer`.

Die Auswahl **Gesamte öffentliche Website (global)** bedeutet, dass die gewählte Header-, Body- oder Footerposition auf allen normalen Frontend-Seiten gilt. Die Priorität bestimmt die Reihenfolge mehrerer Snippets am selben Hook.

= Kernfunktionen der Gratisversion =

* PHP-, CSS-, JavaScript- und HTML-Snippets.
* Frontend-, Backend- und globale Ausführungsbereiche.
* Sitewide Header-, Body-Open- und Footer-Ausgabe.
* Code-Editor, Duplizieren, Suchen, Filtern und Paginierung.
* Revision bei jeder Änderung und kontrollierter Rollback.
* Neue und geänderte Snippets bleiben zunächst inaktiv.
* Safe Mode über Oberfläche oder `wp-config.php`.
* Gesonderte globale PHP-Freigabe und eigene Capability.
* Automatische Quarantäne bei erkannten PHP-Laufzeitfehlern.
* Gecachter Ausführungsplan und gedrosselte Laufzeitstempel.
* Schema-2-Import/Export sowie Legacy-Import aus 1.0.0.
* Datenminimiertes Auditprotokoll.
* REST API, APlug-Modulmanifest, Dienste und Ereignisse.
* Diagnose, Selbsttest und WordPress-Datenschutzwerkzeuge.
* Keine Telemetrie, keine automatischen externen Verbindungen und keine Remote-Ressourcen.

= Sicherheitsgrenze =

PHP-Snippets werden mit den Rechten des WordPress-PHP-Prozesses ausgeführt. Die Syntax- und Tokenprüfung ist keine Sandbox. Endlosschleifen, Speicherüberläufe und sämtliche Auswirkungen beliebigen PHP-Codes können nicht vollständig isoliert werden. Aktivieren Sie ausschließlich geprüften Code und halten Sie einen funktionierenden Wiederherstellungsweg bereit.

HTML, CSS und JavaScript werden absichtlich als vom Administrator freigegebener Code ausgegeben. Externe URLs, Tracking, Cookies, Endgerätezugriffe oder Datenübertragungen innerhalb eines Snippets müssen vom Websitebetreiber separat geprüft, dokumentiert und – falls erforderlich – an ein Einwilligungssystem angebunden werden.

= Gratis und Premium =

Die Gratisversion enthält den vollständigen lokalen Kern. Die getrennt installierbare **APlug SnippetZentrale Premium** ergänzt tatsächlich:

* Vier-Augen-Freigaben mit Revisionsbindung.
* Schutz vor Selbstfreigabe.
* Zeitgesteuerte Aktivierung und Deaktivierung.
* Workflow-Audit und Compliance-Kurzberichte.
* CSV-Export der Premium-Workflowkennzahlen.

Premiumcode ist nicht im Gratispaket versteckt. Die Erweiterung benötigt das Basisplugin und einen gültigen zentralen Nachweis über `aplug_module_has_premium( 'aplug-snippetzentrale' )`. Es existiert keine lokale konkurrierende Schlüsselverwaltung. Ein fehlender oder abgelaufener Nachweis löscht keine Snippets und beeinträchtigt die Gratisfunktionen nicht.

== Installation ==

1. Vollständige Website- und Datenbanksicherung erstellen.
2. ZIP-Datei unter **Plugins > Installieren > Plugin hochladen** hochladen.
3. **APlug SnippetZentrale** aktivieren.
4. **SnippetZentrale > Diagnose** öffnen und den Selbsttest ausführen.
5. Unter **SnippetZentrale > Einstellungen** die PHP-Ausführung nur bei tatsächlichem Bedarf bewusst freigeben.
6. Ein neues Snippet anlegen, **Gesamte öffentliche Website (global)** und die gewünschte Header-, Body- oder Footerposition auswählen.
7. Snippet prüfen, speichern und anschließend bewusst aktivieren.

Notfall-Safe-Mode in `wp-config.php`:

`define( 'APLUG_SNIPPETS_SAFE_MODE', true );`

Nur PHP-Ausführung sperren:

`define( 'APLUG_SNIPPETS_DISABLE_PHP', true );`

== Frequently Asked Questions ==

= Können Snippets wirklich auf der gesamten Website im Header oder Footer erscheinen? =

Ja. Wählen Sie als Bereich **Gesamte öffentliche Website (global)** und als Position **Global im Header**, **Global direkt nach dem öffnenden Body** oder **Global im Footer**. PHP verwendet die entsprechenden WordPress-Hooks. Das Body-Open-Signal setzt voraus, dass das aktive Theme `wp_body_open()` korrekt aufruft.

= Kann ich Code nur im WordPress-Backend ausgeben? =

Ja. Wählen Sie **Gesamtes WordPress-Backend**. HTML, CSS und JavaScript werden dann über `admin_head` beziehungsweise `admin_footer` ausgegeben. Für PHP stehen eigene Backend-Hooks zur Verfügung.

= Ist PHP-Code vollständig isoliert? =

Nein. Die Prüfung blockiert bekannte besonders gefährliche Konstruktionen und erkennt Syntaxfehler, stellt aber keine Prozess- oder Betriebssystem-Sandbox dar.

= Bleiben Snippets beim Update von 1.0.0 erhalten? =

Ja. Die vorhandene Tabelle wird erweitert. Bestehende aktive Snippets bleiben aus Bestandsschutzgründen aktiv. Frühere Fehlerstatus werden in Quarantäne überführt. Aktive Legacy-PHP-Snippets müssen nach dem Update einzeln geprüft werden.

= Werden geänderte aktive Snippets sofort weiter ausgeführt? =

Nein. Jede Codeänderung wird als Revision gespeichert und zunächst inaktiv. Die neue Fassung muss bewusst aktiviert oder mit Premium über einen Freigabeprozess genehmigt werden.

= Kann ich alte JSON-Sicherungen importieren? =

Ja. Sicherungen aus 1.0.0 werden als Legacyformat erkannt, validiert und immer deaktiviert importiert.

= Sendet das Plugin Daten an APlug.de? =

Nein. Das Basisplugin baut selbst keine Lizenz-, Download-, Update- oder Telemetrieverbindung auf. Es stellt lediglich den gemeinsamen Premium-Abfragevertrag bereit.

= Was geschieht bei Deinstallation? =

Vor der Deinstallation kann zwischen Daten behalten, nur Einstellungen/Rollen entfernen oder sämtliche plugin-eigenen Daten vollständig entfernen gewählt werden. Ohne ausdrückliche Auswahl bleiben Daten erhalten.

== Screenshots ==

1. Systemübersicht mit Snippet- und APlug-Status.
2. Paginierte Snippet-Liste mit Status, Typ, globaler Position und Revision.
3. Editor mit globalem Header-, Body-Open- und Footer-Einfügemodus.
4. Revisionsübersicht und kontrollierter Rollback.
5. Safe Mode, PHP-Freigabe und Deinstallationsmodus.
6. Diagnose und Selbsttest.
7. Gratis-/Premium-Gegenüberstellung.
8. Premium-Workflows mit Freigaben und Zeitplänen (separate Erweiterung).

== Changelog ==

= 2.1.0 =
* Tatsächlich getrennte Gratis- und Premium-Pakete vorbereitet.
* Globale Header-, Body-Open- und Footerpositionen verständlich und vollständig ergänzt.
* CSS, JavaScript und HTML können global im Header oder Footer ausgegeben werden.
* JavaScript und HTML können zusätzlich direkt nach dem öffnenden Body ausgegeben werden.
* PHP-Hooks um `wp_body_open`, `admin_head` und `admin_footer` ergänzt.
* Ausführungsbereich in der Oberfläche eindeutig als gesamte öffentliche Website oder gesamtes Backend bezeichnet.
* Stabile Premium-Bridge für Vier-Augen-Freigaben, Zeitpläne und Berichte ergänzt.
* Dokumentation, Funktionsmatrix und Tests auf die reale Pakettrennung aktualisiert.

= 2.0.0 =
* Architekturumbau nach den APlug-Arbeitsanweisungen mit Bestandsschutz.
* Granulare Rollen, Revisionen, Rollback, Audit, Safe Mode und Quarantäne ergänzt.
* Gecachter Ausführungsplan und gedrosselte Laufzeitstempel eingeführt.
* Schema-2-Import/Export, REST API, Modulmanifest, Diagnose und Datenschutzwerkzeuge ergänzt.

= 1.0.0 =
* Erstfassung mit PHP-, CSS-, JavaScript- und HTML-Snippets, Safe Mode und JSON-Sicherung.

== Upgrade Notice ==

= 2.1.0 =
Vor dem Update vollständige Sicherung erstellen. Die Datenbankstruktur aus 2.0.0 bleibt kompatibel. Neue globale Positionen stehen nach dem Update sofort zur Verfügung. Die Premiumfunktionen benötigen das separate Premium-ZIP; bestehende Gratisfunktionen und Snippets bleiben ohne Premium vollständig erhalten.

= 2.0.0 =
Vor dem Update von 1.0.0 vollständige Sicherung erstellen. PHP 8.1 oder neuer ist erforderlich. Aktive Legacy-PHP-Snippets bleiben aus Bestandsschutzgründen aktiv und müssen anschließend geprüft werden.
