24 KiB
Codex-Anweisung: WordPress-Plugin für GitLab-/Antora-basierte Knowledgebase
1. Projektziel
Entwickle ein WordPress-Plugin, das technische Produktdokumentationen aus einer GitLab-Gruppe einliest, verarbeitet und innerhalb eines WordPress-basierten Kundenportals veröffentlicht.
Die vorhandene Dokumentationsstruktur basiert auf AsciiDoc (.adoc) und ist grundsätzlich für Antora ausgelegt. In GitLab existiert eine Gruppe namens knowledgebase. Darin liegen mehrere GitLab-Projekte, jeweils ein Projekt pro Produkt oder Modul. Innerhalb jedes Projekts existieren mehrere Branches, wobei jede Branch eine Dokumentationsversion repräsentiert.
Das Plugin soll diese GitLab-Struktur lesen, relevante Branches erkennen, .adoc-Dateien importieren, in HTML rendern und als durchsuchbare, versionierte Dokumentation innerhalb von WordPress bereitstellen.
Das Ziel ist nicht, Antora vollständig nachzubauen. Das Ziel ist ein WordPress-native Plugin, das die bestehende Antora-kompatible Struktur möglichst gut versteht und daraus eine konsistente Kundenportal-Dokumentation erzeugt.
2. Ausgangssituation
2.1 GitLab-Struktur
GitLab enthält eine Gruppe:
knowledgebase/
├── produkt-a/
│ ├── Branch: v1.0.0
│ ├── Branch: v1.1.0
│ └── Branch: v2.0.0
├── produkt-b/
│ ├── Branch: v3.4.0
│ └── Branch: v3.5.0
└── produkt-c/
└── Branch: v1.0.0
Jedes Projekt enthält eine Antora-kompatible Dokumentationsstruktur, zum Beispiel:
antora.yml
modules/
└── ROOT/
├── pages/
│ ├── index.adoc
│ ├── installation.adoc
│ └── configuration.adoc
├── images/
│ └── screenshot.png
├── partials/
└── examples/
Die genaue Struktur kann je nach Produkt variieren, soll aber an Antora angelehnt bleiben.
2.2 Versionierung
Die Versionierung erfolgt derzeit über Git-Branches. Branches, die als Dokumentationsversion gelten, beginnen üblicherweise mit v, zum Beispiel:
v1.0.0
v1.2.0
v2.0.0
Die eigentliche Anzeigenversion kann zusätzlich aus der jeweiligen antora.yml gelesen werden.
Beispiel:
name: produkt-a
title: Produkt A
version: 1.2.0
nav:
- modules/ROOT/nav.adoc
Das Plugin soll Branch- und antora.yml-Informationen kombinieren.
3. Grundanforderungen
Das Plugin soll folgende Kernfunktionen bereitstellen:
- Verbindung zu GitLab über API-Token.
- Auswahl einer GitLab-Gruppe, zum Beispiel
knowledgebase. - Auslesen aller Projekte innerhalb dieser Gruppe.
- Erkennen relevanter Dokumentationsbranches.
- Auslesen der
antora.ymlpro Projekt und Branch. - Auslesen der Antora-typischen Dateistruktur.
- Importieren und Rendern von
.adoc-Dateien nach HTML. - Speichern der gerenderten Dokumentationsseiten in WordPress.
- Abbildung von Produkten, Versionen, Navigationsstruktur und Seiten.
- Anzeige der Dokumentation im WordPress-Frontend.
- Suche innerhalb der importierten Dokumentation.
- Synchronisation per manuellem Button, WP-Cron und optional Webhook.
- Rechte-/Zugriffssteuerung passend für ein Kundenportal.
4. Technische Zielarchitektur
Das Plugin soll als eigenständiges WordPress-Plugin entwickelt werden.
Vorgeschlagener Plugin-Name:
kb-antora-importer
Vorgeschlagene Hauptdatei:
kb-antora-importer.php
Vorgeschlagene Struktur:
kb-antora-importer/
├── kb-antora-importer.php
├── composer.json
├── readme.md
├── uninstall.php
├── assets/
│ ├── css/
│ │ └── frontend.css
│ └── js/
│ └── frontend.js
├── includes/
│ ├── Plugin.php
│ ├── Admin/
│ │ ├── SettingsPage.php
│ │ ├── SyncPage.php
│ │ └── StatusPage.php
│ ├── GitLab/
│ │ ├── GitLabClient.php
│ │ ├── GitLabProject.php
│ │ └── GitLabBranch.php
│ ├── Antora/
│ │ ├── AntoraParser.php
│ │ ├── AntoraYamlReader.php
│ │ ├── AntoraNavParser.php
│ │ └── AntoraResourceResolver.php
│ ├── AsciiDoc/
│ │ ├── AsciiDocRenderer.php
│ │ └── ShortcodeTransformer.php
│ ├── Import/
│ │ ├── ImportManager.php
│ │ ├── ImportJob.php
│ │ ├── ImportLogger.php
│ │ └── Checksum.php
│ ├── Repository/
│ │ ├── ProductRepository.php
│ │ ├── VersionRepository.php
│ │ └── PageRepository.php
│ ├── Frontend/
│ │ ├── Router.php
│ │ ├── TemplateLoader.php
│ │ ├── SearchController.php
│ │ └── BreadcrumbBuilder.php
│ └── Access/
│ └── AccessController.php
└── templates/
├── documentation-index.php
├── product.php
├── version.php
├── page.php
└── search.php
5. WordPress-Datenmodell
Es gibt zwei mögliche Umsetzungswege. Codex soll zunächst Variante A umsetzen, sofern nichts dagegenspricht.
5.1 Variante A: Custom Post Types
Verwende Custom Post Types für die Dokumentationsseiten.
Custom Post Type: kb_doc_page
Repräsentiert eine gerenderte Dokumentationsseite.
Wichtige Meta-Felder:
_kb_gitlab_project_id
_kb_gitlab_project_path
_kb_gitlab_branch
_kb_gitlab_commit_sha
_kb_antora_component
_kb_antora_component_title
_kb_antora_version
_kb_antora_module
_kb_antora_page_path
_kb_antora_source_path
_kb_page_checksum
_kb_last_imported_at
_kb_nav_order
_kb_parent_page_path
Taxonomie: kb_product
Repräsentiert Produkt oder Modul.
Beispiele:
Produkt A
Produkt B
STARFACE Modul X
Yeastar Integration Y
Taxonomie: kb_version
Repräsentiert Dokumentationsversionen.
Beispiele:
1.0.0
1.2.0
2.0.0
Taxonomie: kb_component
Optional, falls Antora-Komponenten explizit abgebildet werden sollen.
5.2 Variante B: Eigene Datenbanktabellen
Diese Variante ist für spätere Skalierung möglich, soll aber nicht initial umgesetzt werden, außer WordPress-Performance oder Datenmodellgründe erzwingen es.
Mögliche Tabellen:
wp_kb_products
wp_kb_versions
wp_kb_pages
wp_kb_assets
wp_kb_import_logs
Für den MVP soll jedoch WordPress-nativ mit Custom Post Types gearbeitet werden.
6. GitLab-Integration
6.1 Konfiguration im WordPress-Backend
Erstelle eine Admin-Seite unter:
Einstellungen → Knowledgebase
Oder als eigener Menüpunkt:
Knowledgebase
├── Übersicht
├── Synchronisation
├── Einstellungen
└── Import-Logs
Benötigte Einstellungen:
GitLab Base URL
GitLab API Token
GitLab Group Path oder Group ID
Branch Pattern, Standard: ^v\d+\.\d+\.\d+.*$
Standard-Synchronisationsintervall
Frontend-Basis-Slug, Standard: /docs/
Zugriffsbeschränkung aktiv/inaktiv
Beispiele:
GitLab Base URL: https://git.example.de
GitLab Group Path: knowledgebase
Branch Pattern: ^v.*
Frontend-Basis-Slug: docs
6.2 API-Zugriff
Implementiere eine Klasse GitLabClient.
Aufgaben:
- Authentifizierung per Private Token oder Bearer Token.
- Abrufen der Gruppe.
- Abrufen aller Projekte innerhalb der Gruppe.
- Abrufen aller Branches pro Projekt.
- Filtern der Branches nach Pattern.
- Abrufen einzelner Dateien per Repository Files API.
- Abrufen von Repository Trees.
- Abrufen von Raw File Content.
- Fehlerbehandlung für 401, 403, 404, 429 und 5xx.
- Optional: einfache Rate-Limit-Behandlung.
Der Token darf niemals im Klartext ausgegeben werden.
Speicherung des Tokens:
- möglichst verschlüsselt oder zumindest über WordPress Options API geschützt,
- niemals in Logs,
- niemals im Frontend,
- niemals in Fehlermeldungen.
7. Antora-Kompatibilität
Das Plugin soll zentrale Antora-Konzepte verstehen, ohne Antora vollständig nachzubauen.
7.1 antora.yml
Pro Projekt und Branch soll die Datei antora.yml gelesen werden.
Relevante Felder:
name: product-name
title: Product Title
version: 1.2.0
nav:
- modules/ROOT/nav.adoc
Verwendung:
name → interner Komponenten-/Produktname
title → Anzeigename im Frontend
version → Anzeigenversion
nav → Navigationsdateien
Falls antora.yml fehlt:
- Projekt nicht hart abbrechen,
- Fehler sauber loggen,
- Projekt/Branch überspringen oder Fallback verwenden,
- Importstatus anzeigen.
7.2 Module
Unterstütze mindestens:
modules/ROOT/pages/
modules/ROOT/images/
modules/ROOT/partials/
modules/ROOT/examples/
modules/ROOT/nav.adoc
Später optional:
modules/<module-name>/pages/
modules/<module-name>/images/
modules/<module-name>/partials/
modules/<module-name>/examples/
MVP-Anforderung:
ROOT-Modul vollständig unterstützen.- Weitere Module erkennen, aber zunächst einfach als zusätzliche Bereiche importieren.
7.3 Navigation
Antora nutzt häufig nav.adoc.
Beispiel:
* xref:index.adoc[Einführung]
* Installation
** xref:installation.adoc[Installation]
** xref:configuration.adoc[Konfiguration]
Das Plugin soll daraus eine hierarchische Navigation erzeugen.
Anforderungen:
xref:-Links erkennen.- Titel aus eckigen Klammern lesen.
- Verschachtelung anhand der Sternchen-Ebene erkennen.
- Seitenreihenfolge speichern.
- Nicht verlinkte Überschriften als Navigationsgruppen darstellen.
- Navigation im Frontend als Sidebar ausgeben.
8. AsciiDoc-Rendering
8.1 Grundsatz
.adoc-Dateien müssen in HTML gerendert werden.
Mögliche Renderer:
- PHP-basierter AsciiDoc-Parser, falls ausreichend stabil.
- Externer CLI-Aufruf zu Asciidoctor, falls verfügbar.
- Container-/Service-basierter Renderer als spätere Option.
Für den MVP soll eine robuste und realistische Lösung gewählt werden. Wenn ein vollständiger AsciiDoc-Renderer in PHP nicht zuverlässig verfügbar ist, soll das Plugin optional asciidoctor per CLI verwenden können.
8.2 Renderer-Konfiguration
Backend-Einstellung:
Renderer Mode:
- PHP Renderer
- Asciidoctor CLI
- External Render Service später
Wenn asciidoctor CLI verwendet wird:
- Pfad konfigurierbar machen,
- Verfügbarkeit prüfen,
- Fehlermeldung im Status anzeigen,
- keine unsicheren Shell-Aufrufe,
- Eingaben escapen,
- temporäre Dateien sicher speichern und löschen.
8.3 Mindestfeatures
Folgende AsciiDoc-Features sollen unterstützt werden:
Überschriften
Absätze
Listen
Tabellen
Quellcodeblöcke
Admonitions / Hinweise
Bilder
Interne xref-Links
Externe Links
Includes / Partials, soweit lokal auflösbar
8.4 Link-Transformation
Antora-/AsciiDoc-Links müssen in WordPress-URLs umgeschrieben werden.
Beispiele:
xref:installation.adoc[Installation]
image::screenshot.png[Screenshot]
Soll werden zu:
<a href="/docs/produkt-a/1.2.0/installation/">Installation</a>
<img src="..." alt="Screenshot">
Bei fehlendem Ziel:
- Link markieren,
- Importwarnung loggen,
- Frontend nicht hart abbrechen.
9. Assets und Bilder
Bilder aus Antora-Strukturen müssen importiert oder proxyfähig ausgeliefert werden.
9.1 Import in WordPress Media Library
Bevorzugt für MVP:
- Bilder aus
modules/*/images/erkennen. - In die WordPress Media Library importieren.
- Medien-ID speichern.
- Bildreferenzen im HTML auf WordPress-Medien-URLs umschreiben.
- Checksums nutzen, damit Bilder nicht bei jedem Sync dupliziert werden.
9.2 Unterstützte Dateitypen
Mindestens:
.png
.jpg
.jpeg
.gif
.svg
.webp
SVG nur zulassen, wenn sicher behandelt oder explizit erlaubt.
9.3 Lightbox-Kompatibilität
Das gerenderte HTML soll optional CSS-Klassen oder Attribute erhalten, damit Bilder im Frontend mit einer Lightbox geöffnet werden können.
Beispiel:
<a href="FULL_IMAGE_URL" class="kb-lightbox">
<img src="IMAGE_URL" alt="...">
</a>
Dies soll als Option steuerbar sein:
Bilder automatisch mit Lightbox verlinken: ja/nein
10. Frontend-Ausgabe
Die Dokumentation soll unter einem konfigurierbaren Basis-Slug erscheinen.
Standard:
/docs/
URL-Struktur:
/docs/
/docs/{product}/
/docs/{product}/{version}/
/docs/{product}/{version}/{page}/
Beispiele:
/docs/starface-modul-x/
/docs/starface-modul-x/2.1.0/
/docs/starface-modul-x/2.1.0/installation/
10.1 Frontend-Komponenten
Jede Dokumentationsseite soll enthalten:
- Produktname.
- Versionsauswahl.
- Sidebar-Navigation.
- Breadcrumbs.
- Hauptinhalt.
- Optional: Inhaltsverzeichnis der Seite.
- Optional: Hinweis, wenn es eine neuere Version gibt.
- Suchfeld innerhalb der Dokumentation.
10.2 Shortcodes oder Blöcke
Zusätzlich sollen Shortcodes bereitgestellt werden:
[kb_docs_index]
[kb_product_index product="produkt-a"]
[kb_search]
Optional später Gutenberg-Blöcke.
11. Suche
Für den MVP reicht eine WordPress-native Suche über den Custom Post Type kb_doc_page.
Anforderungen:
- Suche nur innerhalb der Dokumentation.
- Filter nach Produkt.
- Filter nach Version.
- Treffer mit Titel, Auszug und Produkt-/Versionskontext anzeigen.
Später optional:
- Relevanzranking,
- Volltextindex,
- externe Search Engine,
- Synonyme,
- Suchstatistiken.
12. Synchronisation
12.1 Manuelle Synchronisation
Backend-Seite:
Knowledgebase → Synchronisation
Funktionen:
- Alle Projekte synchronisieren.
- Einzelnes Projekt synchronisieren.
- Einzelne Version/Branch synchronisieren.
- Dry Run durchführen.
- Import-Log anzeigen.
12.2 WP-Cron
Konfigurierbare automatische Synchronisation:
Deaktiviert
Stündlich
Täglich
Wöchentlich
12.3 Webhook später
Optional soll vorbereitet werden:
/wp-json/kb-antora/v1/gitlab-webhook
Der Webhook soll später GitLab Push Events empfangen können.
Für MVP nur vorbereiten oder als einfache Version implementieren.
13. Importlogik
13.1 Importablauf
Pro Synchronisation:
- Einstellungen laden.
- GitLab-Verbindung prüfen.
- Gruppe abrufen.
- Projekte abrufen.
- Pro Projekt Branches abrufen.
- Branches nach Pattern filtern.
- Pro Branch
antora.ymlabrufen. - Version und Produkttitel bestimmen.
- Repository Tree abrufen.
.adoc-Dateien untermodules/*/pages/finden.- Assets unter
modules/*/images/finden. - Navigation aus
nav.adoclesen. - Assets importieren.
.adocrendern.- Links und Bilder umschreiben.
- WordPress-Posts erstellen oder aktualisieren.
- Veraltete Seiten markieren.
- Importlog schreiben.
13.2 Update-Erkennung
Verwende Checksums und/oder Git Commit SHA.
Wenn sich eine Datei nicht geändert hat:
- nicht neu rendern,
- nicht unnötig WordPress-Post aktualisieren,
- Importzeit sparen.
13.3 Löschverhalten
Wenn eine Seite in GitLab nicht mehr existiert:
Optionen:
Als veraltet markieren
In Papierkorb verschieben
Hart löschen
Ignorieren
MVP-Standard:
Als veraltet markieren
14. Rechte und Kundenportal-Integration
Das Plugin wird in einem Kundenportal verwendet. Dokumentationen dürfen je nach Portalstruktur nicht immer öffentlich sein.
14.1 Zugriff
Backend-Option:
Dokumentation öffentlich anzeigen: ja/nein
Wenn nein:
- nur eingeloggte Benutzer dürfen Dokumentation sehen.
Später optional:
- Zugriff nach Produkt,
- Zugriff nach Kundengruppe,
- Zugriff nach WordPress-Rolle,
- Zugriff nach Membership-/Portal-Plugin.
14.2 WordPress Capabilities
Neue Capabilities:
manage_kb_docs
view_kb_docs
sync_kb_docs
Administratoren erhalten alle Capabilities automatisch.
15. Admin-UX
Das Backend soll technisch sauber, aber nicht überladen sein.
15.1 Übersichtsseite
Anzeigen:
GitLab-Verbindungsstatus
Anzahl Projekte
Anzahl importierte Produkte
Anzahl Versionen
Anzahl Seiten
Letzte Synchronisation
Letzter Fehler
Renderer-Status
15.2 Synchronisationsseite
Anzeigen:
Button: Alles synchronisieren
Button: Dry Run
Projektliste mit Sync-Button pro Projekt
Fortschritts-/Statusanzeige
Importlogs
15.3 Einstellungen
Felder:
GitLab Base URL
GitLab Token
GitLab Group Path / ID
Branch Pattern
Docs Base Slug
Renderer Mode
Asciidoctor Path
Lightbox für Bilder
Öffentlich / nur eingeloggte Benutzer
Cron-Intervall
Alle Eingaben validieren und escapen.
16. REST API
Erstelle eine kleine interne REST API für Admin-Aktionen.
Namespace:
kb-antora/v1
Routen:
GET /status
POST /sync
POST /sync/project
GET /search
POST /gitlab-webhook optional
Alle schreibenden Endpoints müssen Nonce- und Capability-Prüfung verwenden.
17. Sicherheit
Besondere Anforderungen:
- GitLab-Token niemals ausgeben.
- Alle Admin-Aktionen mit Capability Checks absichern.
- REST-API mit Nonces und Berechtigungen schützen.
- Gerendertes HTML sanitizen.
- Keine ungeprüften Shell-Befehle.
- Temporäre Dateien sicher behandeln.
- SVG nur nach Sanitizing oder deaktiviert.
- Keine privaten GitLab-URLs im Frontend leaken.
- Keine Stacktraces im Frontend.
- Logs ohne Secrets speichern.
18. Performance
Die Dokumentation kann viele Produkte, Versionen und Seiten enthalten. Deshalb:
- Imports in Batches ausführen.
- Lange Prozesse nicht direkt in einem einzelnen HTTP-Request blockieren, wenn vermeidbar.
- Checksums verwenden.
- Caching für Navigationsbäume.
- Caching für Produkt-/Versionslisten.
- WP_Query effizient halten.
- Nur geänderte Dateien neu rendern.
- Importlogs begrenzen oder rotieren.
Für den MVP darf die manuelle Synchronisation zunächst sequentiell laufen, solange der Code so strukturiert ist, dass Batch-/Queue-Verarbeitung später leicht ergänzt werden kann.
19. Fehlerbehandlung und Logging
Implementiere Importlogs mit Schweregraden:
INFO
WARNING
ERROR
DEBUG optional
Zu loggende Ereignisse:
GitLab-Verbindung erfolgreich/fehlgeschlagen
Projekt gefunden
Branch gefunden
Branch übersprungen
antora.yml gefunden/fehlt/fehlerhaft
nav.adoc gefunden/fehlt/fehlerhaft
Seite importiert
Seite aktualisiert
Seite unverändert
Asset importiert
Linkziel fehlt
Rendering fehlgeschlagen
Synchronisation abgeschlossen
Logs sollen im Backend sichtbar sein.
20. MVP-Umfang
Der erste funktionsfähige Stand soll Folgendes können:
- Plugin installierbar und aktivierbar.
- Admin-Einstellungen für GitLab-Zugang.
- Verbindungstest zu GitLab.
- Projekte einer GitLab-Gruppe abrufen.
- Branches nach Pattern
^v.*erkennen. antora.ymllesen.modules/ROOT/pages/*.adocimportieren.- Einfache
.adoc-Dateien nach HTML rendern. - Bilder aus
modules/ROOT/images/importieren. - Interne
xref:-Links umschreiben. - Seiten als
kb_doc_pagespeichern. - Frontend-Ausgabe unter
/docs/{product}/{version}/{page}/. - Produktindex und Versionsauswahl anzeigen.
- Einfache Sidebar aus
nav.adocerzeugen. - Manuelle Synchronisation im Backend.
- Importlogs anzeigen.
21. Nicht-Ziele für den MVP
Nicht im ersten Schritt umsetzen:
- Vollständige Antora-Engine nachbauen.
- Mehrsprachigkeit.
- Komplexe Berechtigung nach Kunde/Produkt.
- Externe Suchmaschine.
- Live-Rendering bei jedem Seitenaufruf.
- GitLab-Webhook mit vollständiger Eventlogik.
- Gutenberg-Blöcke.
- Visueller Editor für
.adoc. - Merge-Request-Workflow.
- Antora UI Bundles vollständig unterstützen.
22. Coding-Standards
Bitte nach WordPress-Standards entwickeln:
- PHP 8.1+ kompatibel.
- WordPress Coding Standards berücksichtigen.
- Namespaces verwenden.
- Klassen sauber trennen.
- Keine Businesslogik in Templates.
- Keine direkten
$_POST/$_GET-Zugriffe ohne Sanitizing. - Alle Ausgaben escapen.
- Transients/Options API sinnvoll verwenden.
- Composer Autoloading nutzen, falls sinnvoll.
- Code dokumentieren, aber nicht überkommentieren.
Namespace-Vorschlag:
Obyte\Knowledgebase\
Oder neutral:
KbAntoraImporter\
23. Akzeptanzkriterien
Der MVP gilt als erfolgreich, wenn folgende Tests bestehen:
23.1 Installation
- Plugin lässt sich in WordPress aktivieren.
- Admin-Menü erscheint.
- Keine PHP-Warnings oder Fatal Errors.
23.2 GitLab-Verbindung
- GitLab Base URL und Token können gespeichert werden.
- Verbindungstest funktioniert.
- Gruppe
knowledgebasekann gelesen werden. - Projekte werden angezeigt.
23.3 Import
- Mindestens ein Projekt mit Branch
v1.0.0wird erkannt. antora.ymlwird gelesen..adoc-Seiten werden importiert.- Bilder werden importiert oder korrekt referenziert.
- Seiten erscheinen als
kb_doc_page.
23.4 Frontend
/docs/zeigt eine Dokumentationsübersicht./docs/{product}/zeigt Produktversionen./docs/{product}/{version}/zeigt die Versionsübersicht./docs/{product}/{version}/{page}/zeigt die gerenderte Seite.- Sidebar-Navigation funktioniert.
- Interne Links funktionieren.
23.5 Sync
- Erneuter Import dupliziert keine Seiten.
- Geänderte Seiten werden aktualisiert.
- Unveränderte Seiten bleiben unverändert.
- Fehler werden im Log sichtbar.
24. Entwicklungsreihenfolge
Bitte in dieser Reihenfolge entwickeln:
- Plugin-Grundstruktur und Autoloading.
- Admin-Menü und Einstellungsseite.
- GitLabClient mit Verbindungstest.
- Projekt- und Branch-Erkennung.
antora.ymlReader.- Repository Tree Reader.
- Importmodell für Produkte, Versionen und Seiten.
- Custom Post Type und Taxonomien.
- Einfacher AsciiDoc Renderer.
- Link- und Bild-Umschreibung.
- Frontend-Routing und Templates.
- Navigation aus
nav.adoc. - Importlogs.
- Suche.
- Cron/Webhook-Grundlage.
- Sicherheits- und Performance-Review.
25. Wichtige Architekturentscheidung
Das Plugin soll Dokumentation nicht bei jedem Seitenaufruf live aus GitLab rendern.
Stattdessen:
GitLab → Sync/Import → WordPress-Speicherung → Frontend-Ausgabe aus WordPress
Begründung:
- Bessere Performance.
- Kein GitLab-API-Zugriff bei jedem Kundenaufruf.
- Bessere WordPress-Suche.
- Bessere Kontrolle über Zugriffsrechte.
- Stabileres Kundenportal bei GitLab-Ausfällen.
26. Beispiel-Frontend-Struktur
Dokumentationsübersicht:
/docs/
Knowledgebase
├── Produkt A
│ ├── Version 1.0.0
│ └── Version 1.2.0
├── Produkt B
│ └── Version 3.5.0
└── Produkt C
└── Version 1.0.0
Produktseite:
/docs/produkt-a/
Produkt A
Verfügbare Versionen:
- 2.0.0 aktuell
- 1.2.0
- 1.0.0
Dokuseite:
/docs/produkt-a/2.0.0/installation/
[Sidebar Navigation]
Produkt A / 2.0.0 / Installation
<h1>Installation</h1>
...
27. Beispiel für interne Linkauflösung
Quelle:
Weitere Informationen findest du unter xref:configuration.adoc[Konfiguration].
Kontext:
Produkt: produkt-a
Version: 2.0.0
Aktuelle Seite: installation.adoc
Ziel:
Weitere Informationen findest du unter <a href="/docs/produkt-a/2.0.0/configuration/">Konfiguration</a>.
28. Beispiel für Bildauflösung
Quelle:
image::screenshot-login.png[Login-Screenshot]
Suchpfad:
modules/ROOT/images/screenshot-login.png
Ziel:
<figure class="kb-image">
<a href="..." class="kb-lightbox">
<img src="..." alt="Login-Screenshot">
</a>
</figure>
29. Erwartetes Ergebnis
Am Ende soll ein installierbares WordPress-Plugin entstehen, das vorhandene GitLab-/Antora-Dokumentationen aus der Gruppe knowledgebase importiert und im WordPress-Kundenportal als strukturierte, versionierte Knowledgebase veröffentlicht.
Das Plugin soll technisch sauber, wartbar und erweiterbar sein. Der MVP soll bewusst pragmatisch bleiben, aber die Architektur muss spätere Erweiterungen erlauben, insbesondere:
kundenspezifische Berechtigungen
bessere Suche
GitLab-Webhooks
mehrere Module
mehrsprachige Dokumentation
Gutenberg-Blöcke
externen Render-Service
30. Zusätzliche Hinweise für Codex
- Arbeite inkrementell.
- Nach jeder größeren Änderung soll der Code lauffähig bleiben.
- Keine Platzhalterfunktionen ohne klare TODO-Kommentare.
- Keine unnötigen Framework-Abhängigkeiten.
- WordPress-Kompatibilität priorisieren.
- Fehler lieber sichtbar loggen als still verschlucken.
- Sicherheitsrelevante Eingaben immer validieren, sanitizen und escapen.
- Plugin so entwickeln, dass es später in einem produktiven Kundenportal betrieben werden kann.