Demo for THM: CMS
Dieses Projekt startet eine vollständige WordPress-Umgebung mit Datenbank und Datenbankverwaltung – alles lokal über Docker. Es wurde im Rahmen einer Prüfungsleistung entwickelt und bildet das CMS-Konzept für eine Online-Zeitschrift mit mehreren Autoren, Redakteuren und einem Administrator ab.
by Karry, Martin · github.com/roussel9/wordpress-cms · website
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/roussel9/wordpress-cms/archive/refs/heads/master.zipReadme
WordPress CMS – Online-Zeitschrift (Heim · Garten · Elektronik)
Dieses Projekt startet eine vollständige WordPress-Umgebung mit Datenbank und Datenbankverwaltung – alles lokal über Docker. Es wurde im Rahmen einer Prüfungsleistung entwickelt und bildet das CMS-Konzept für eine Online-Zeitschrift mit mehreren Autoren, Redakteuren und einem Administrator ab.
Projektstruktur
wordpress/
├── docker-compose.yml # Startet alle Dienste (WordPress, MariaDB, Adminer)
├── wp-content/
│ ├── plugins/
│ │
│ ├── themes/ # Aktive Themes
│ └── uploads/ # Hochgeladene Medien
└── README.md
Voraussetzungen
Folgendes muss auf dem Rechner installiert sein:
- Docker Desktop (inkl. Docker Compose)
Projekt starten
# In den Projektordner wechseln
cd wordpress
# Alle Dienste starten
docker compose up
Beim ersten Start werden alle Docker-Images automatisch heruntergeladen. Dies kann einige Minuten dauern.
Dienste & Zugänge
| Dienst | URL | Beschreibung |
|---|---|---|
| WordPress | http://localhost:8080 | Die eigentliche Website / Backend |
| Adminer | http://localhost:8081 | Datenbankverwaltung im Browser |
Adminer Login-Daten
| Feld | Wert |
|---|---|
| Server | db |
| Benutzername | wordpress |
| Passwort | wordpress |
| Datenbank | wordpress |
👥 Benutzerrollen & Berechtigungskonzept
Das Projekt setzt ein Berechtigungskonzept mit drei Rollen und drei Themenbereichen um.
Themenbereiche (WordPress-Kategorien)
HeimGartenElektronik
Rollen
| Rolle | Kann | Kann nicht |
|---|---|---|
| Autor | Artikel schreiben, eigene Entwürfe einreichen | Artikel veröffentlichen, fremde Artikel bearbeiten |
| Redakteur | Artikel prüfen und veröffentlichen (nur eigener Bereich) | Benutzer verwalten, Plugins installieren |
| Administrator | Alles | – (nur bei Sonderfällen aktiv) |
Angelegte Testbenutzer
| Benutzername | Rolle | Bereich |
|---|---|---|
autor-heim |
Autor | Heim |
autor-garten |
Autor | Garten |
autor-elektronik |
Autor | Elektronik |
redakteur-heim |
Redakteur | Heim |
redakteur-garten |
Redakteur | Garten |
redakteur-elektronik |
Redakteur | Elektronik |
Die Kategorie-Einschränkung pro Redakteur wird mit dem Plugin PublishPress Permissions umgesetzt.
Workflow – Artikel von Entwurf bis Veröffentlichung
Autor meldet sich an
↓
Autor schreibt Artikel und wählt die richtige Kategorie (z.B. "Garten")
↓
Autor klickt „Zur Überprüfung einreichen" → Status: Ausstehend
↓
Redakteur (Bereich Garten) meldet sich an und sieht den Artikel
↓
Redakteur prüft, bearbeitet ggf. und klickt „Veröffentlichen"
↓
Artikel ist live
🧪 Verschiedene Benutzer testen
So testest du das System mit unterschiedlichen Accounts:
Methode 1: Verschiedene Browser
Öffne unterschiedliche Browser gleichzeitig:
- Chrome → als
autor-heimangemeldet - Firefox → als
redakteur-heimangemeldet - Edge → als Administrator angemeldet
Jeder Browser hält seine eigene Session → kein Ausloggen nötig.
Methode 2: Inkognito-Fenster
In Chrome/Firefox:
Normales Fenster → Benutzer A
Inkognito-Fenster → Benutzer B
Methode 3: Nacheinander ausloggen
- Oben rechts in WordPress → „Hallo, [Name]" → Abmelden
- Auf http://localhost:8080/wp-login.php mit anderem Account anmelden
Installierte Plugins
| Plugin | Zweck |
|---|---|
| Members (MemberPress) | Rollenverwaltung – eigene Rollen erstellen und Berechtigungen feingranular steuern |
| PublishPress Permissions | Kategorie-Einschränkung pro Benutzer – Redakteur sieht nur seinen Bereich |
Demo-Plugin (demo.php) |
Testzweck – ersetzt alle Beitragstitel durch „Hello World (Originaltitel)" |
Projekt stoppen
# Dienste stoppen (Daten bleiben erhalten)
docker compose down
# Dienste stoppen UND alle Daten löschen (komplett zurücksetzen)
docker compose down -v