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.
Install
This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.
Install straight from GitHub with WP-CLI:
wp plugin install https://github.com/roussel9/wordpress-cms/archive/refs/heads/master.zipWordPress 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