Files
WP-Business-Forum/README.md
2026-03-20 23:58:19 +00:00

499 lines
17 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 💬 WP Business Forum
**Ein vollständiges, eigenständiges Forum-Plugin für WordPress** — mit eigenem Login-System, dynamischen Rollen, Privatnachrichten, BBCode, Level-System, Moderations-Tools und vielem mehr.
> **Version 2.0.0** · Getestet mit WordPress 6.x · PHP 8.0+ · MySQL 5.7+
---
## 📋 Inhaltsverzeichnis
- [Features](#-features)
- [Installation](#-installation)
- [Erster Start — Setup-Wizard](#-erster-start--setup-wizard)
- [Shortcode](#-shortcode)
- [Admin-Bereich](#-admin-bereich)
- [Rollen & Berechtigungen](#-rollen--berechtigungen)
- [Level-System](#-level-system)
- [BBCode-Referenz](#-bbcode-referenz)
- [Dateistruktur](#-dateistruktur)
- [Datenbank-Tabellen](#-datenbank-tabellen)
- [Export & Import](#-export--import)
- [FAQ](#-faq)
---
## ✨ Features
### 🔐 Eigenes Login-System
- Komplett unabhängig vom WordPress-Backend — Forum-Nutzer brauchen keinen WP-Account
- Registrierung direkt im Forum-Frontend
- **Remember-Me** Cookie (30 Tage)
- **Passwort vergessen** mit sicherem Reset-Link per E-Mail (1 Stunde gültig)
- **Auto-Logout** bei Inaktivität (einstellbar: 5 Min. bis 8 Std.)
- Groß-/Kleinschreibung beim Login egal
### 📁 Kategorien & Threads
- **Eltern-Kind-Hierarchie** — unbegrenzte Verschachtelung
- Threads erstellen, bearbeiten (Titel + Inhalt), löschen
- **Pinnen** und **Schließen** von Threads (Moderatoren+)
- **Thread-Tags** für bessere Auffindbarkeit
- **Views-Counter** pro Thread
- **Breadcrumb-Navigation** durch die gesamte Hierarchie
- **Kategorie-Zugangsbeschränkung** per Mindest-Rolle
### 💬 Posts & Interaktion
- Antworten mit **Live-Vorschau** (kein Seitenreload)
- **Like-System** für Threads und Posts
- **Emoji-Reaktionen** (👍 ❤️ 😂 😮 😢 🔥)
- **Zitieren** mit automatischem `[quote=Name]`-BBCode
- **@Erwähnungen** — klickbare Profil-Links
- **Beiträge melden** mit Begründung
- Posts und Thread-Titel nachträglich bearbeiten
### 🛡️ Rollen-System
6 Standard-Rollen + beliebig viele eigene Rollen:
| Rolle | Level | Besonderheit |
|---|---|---|
| 👑 Superadmin | 100 | Automatisch an WP-Administrator gebunden — unveränderlich |
| 🔴 Admin | 80 | Vollständige Verwaltung |
| 🟡 Moderator | 50 | Moderation von Threads & Posts |
| 🔵 VIP | 20 | Eigenes Badge |
| ⚪ Member | 10 | Standard für neue Nutzer |
| ⛔ Gesperrt | -1 | Kein Forum-Zugang |
Jede Rolle ist vollständig anpassbar: Label, Level, Farbe, Icon (FontAwesome), Permissions.
### ⭐ Level-System
Automatisches Level basierend auf Beitragsanzahl (kann deaktiviert werden):
| Level | Ab Beiträgen | Icon |
|---|---|---|
| 🌱 Neuling | 0 | `fas fa-seedling` |
| 🪶 Schreiberling | 10 | `fas fa-feather` |
| 🔥 Erfahrener | 50 | `fas fa-fire` |
| 🛡️ Veteran | 150 | `fas fa-shield-halved` |
| 👑 Legende | 500 | `fas fa-crown` |
Levels sind im Admin vollständig anpassbar — Bezeichnung, Schwellenwert, Icon, Farbe.
### 👤 Profile
- Eigenes Avatar-Bild (Upload oder Gravatar)
- Anzeigename, Bio und **Signatur** (max. 300 Zeichen, erscheint unter jedem Beitrag)
- Profil-Seite mit Beitragsübersicht und Fortschrittsbalken
- **Mitgliederliste** (nur für eingeloggte Nutzer) mit Suche und Sortierung
### ✉️ Privatnachrichten
- Direktnachrichten zwischen Nutzern
- **Posteingang** mit Konversations-Übersicht
- Ungelesene Nachrichten werden im Topbar angezeigt
- **Ältere Nachrichten laden** (Pagination)
- Nachrichten löschen
### 🔔 Benachrichtigungen
- In-App-Glocke in der Topbar mit Badge
- E-Mail-Benachrichtigungen bei:
- Antwort auf eigenen Thread
- @Erwähnung
- Neue Privatnachricht
- Benachrichtigungen als gelesen markieren
### 🔍 Suche
- Volltextsuche in Threads und Posts
- Live-Vorschläge bei der Eingabe
- Ergebnisse mit Kategorie und Datum
### 🔧 Moderations-Tools
- Thread pinnen / entpinnen
- Thread schließen / öffnen
- Thread in andere Kategorie verschieben
- Posts und Threads löschen
- Meldungs-System mit Admin-Dashboard
- Nutzer sperren mit Sperrgrund (wird beim Login angezeigt)
### ⚙️ Admin-Backend
- **Übersicht** mit Echtzeit-Statistiken
- **Kategorien** verwalten (Hierarchie, Icons, Min-Rolle)
- **Rollen** erstellen, bearbeiten, löschen
- **Level** konfigurieren
- **Mitglieder** verwalten — Rolle, E-Mail, Passwort, Anzeigename ändern
- **Meldungen** bearbeiten (offen / erledigt / verworfen)
- **Einstellungen** — alle Forum-Texte anpassbar, kein Code nötig
- **Export / Import** — vollständige Datensicherung
---
## 🚀 Installation
### Methode 1 — ZIP hochladen (empfohlen)
1. Lade das Repository als `.zip` herunter
2. WordPress-Admin → **Plugins****Installieren****Plugin hochladen**
3. ZIP auswählen und installieren
4. Plugin **aktivieren**
### Methode 2 — FTP / Dateimanager
1. Lade den Ordner `wp-business-forum` auf deinen Server hoch
2. Zielverzeichnis: `/wp-content/plugins/wp-business-forum/`
3. WordPress-Admin → Plugins → **WP Business Forum** aktivieren
### Voraussetzungen
- WordPress **6.0+**
- PHP **8.0+**
- MySQL **5.7+** oder MariaDB **10.3+**
- `wp_mail()` für E-Mail-Benachrichtigungen (Standard-WP-Mailer)
---
## 🧙 Erster Start — Setup-Wizard
Nach der Aktivierung wirst du automatisch zum **Setup-Wizard** weitergeleitet:
**Schritt 1 — Superadmin-Konto erstellen**
- Dein Name und deine WP-Admin-E-Mail sind bereits vorausgefüllt
- Gib ein Passwort für dein Forum-Konto ein
- Das Konto wird automatisch dauerhaft mit dem Superadmin-Status verknüpft
**Schritt 2 — Forum-Seite erstellen**
- Optional: Eine WordPress-Seite mit dem Shortcode wird automatisch angelegt
- Du kannst auch eine eigene Seite manuell erstellen
**Schritt 3 — Fertig!**
- Direktlink zur Forum-Seite
- Link zum Admin-Dashboard
> ⚠️ **Wichtig:** Verwende beim Superadmin-Konto dieselbe E-Mail wie dein WordPress-Administratorkonto. Das Plugin verknüpft sie automatisch und stellt bei jedem Login sicher, dass dein Account immer Superadmin-Rechte hat.
---
## 📌 Shortcode
Füge diesen Shortcode auf einer beliebigen WordPress-Seite ein:
```
[business_forum]
```
Das Plugin erkennt automatisch den aktuellen URL-Parameter und zeigt die passende Ansicht:
| URL-Parameter | Ansicht |
|---|---|
| *(kein Parameter)* | Forum-Startseite |
| `?forum_cat=slug` | Kategorie-Ansicht |
| `?forum_thread=123` | Thread-Ansicht |
| `?forum_profile=123` | Profil-Seite |
| `?forum_members=1` | Mitgliederliste |
| `?forum_search=Begriff` | Suchergebnisse |
| `?forum_tag=tagname` | Tag-Übersicht |
| `?forum_dm=1` | Privatnachrichten |
| `?wbf_do_logout=1` | Logout (serverseitig) |
| `?wbf_reset_token=…` | Passwort zurücksetzen |
---
## 🛠️ Admin-Bereich
Erreichbar unter **WP-Admin → Business Forum**
### Übersicht
- Echtzeit-Statistiken: Threads, Beiträge, Mitglieder, Tags, Meldungen
- Schnellzugriff auf alle Unterbereiche
- Rollensystem-Übersicht
### Kategorien
- Kategorien erstellen und bearbeiten
- **Eltern-Kind-Hierarchie** per Dropdown
- Icon (FontAwesome-Klasse), Beschreibung, Sortierreihenfolge
- **Mindest-Rolle** zum Posten (z.B. nur Moderatoren können in "Ankündigungen" posten)
### Rollen
- Eigene Rollen mit individuellem Label, Level (199), Farbe, Icon und Permissions erstellen
- Rollen löschen (Nutzer werden automatisch auf "Member" gesetzt)
- Superadmin ist gesperrt und kann nicht verändert werden
**Verfügbare Permissions:**
| Permission | Beschreibung |
|---|---|
| `post` | Beiträge schreiben |
| `create_thread` | Threads erstellen |
| `like` | Beiträge liken |
| `pin_thread` | Threads pinnen |
| `close_thread` | Threads schließen |
| `delete_post` | Posts löschen |
| `delete_thread` | Threads löschen |
| `manage_users` | Nutzer verwalten |
| `manage_cats` | Kategorien verwalten |
| `post_announcement` | In eingeschränkte Kategorien posten |
### Level
- Level-Bezeichnung, Mindest-Beitragsanzahl, Icon und Farbe anpassen
- Neues Level hinzufügen oder bestehende löschen
- Level-System global aktivieren/deaktivieren
- Zurücksetzen auf Standard-Konfiguration
### Mitglieder
- Alle Forum-Nutzer mit Rolle, Beitragsanzahl und Registrierungsdatum
- **Rolle ändern** direkt in der Tabelle (inkl. Sperrgrund bei "Gesperrt")
- **Profil bearbeiten**: Anzeigename, E-Mail, Passwort
- Superadmin-Konten sind schreibgeschützt
### Meldungen
- Gemeldete Beiträge mit Begründung und Melder
- Status: Offen · Erledigt · Verworfen
- Direktlink zum gemeldeten Beitrag
### Einstellungen
Alle sichtbaren Texte des Forums ohne Code ändern:
- Hero-Bereich (Titel, Untertitel)
- Topbar (Forum-Name, Button-Beschriftungen)
- Statistik-Labels
- Abschnittsüberschriften
- Sidebar-Titel
- **Auto-Logout** nach Inaktivität (0 = deaktiviert, bis 8 Stunden)
### Export / Import
Vollständige Datensicherung aller Forum-Daten als `.json`-Datei:
| Bereich | Inhalt |
|---|---|
| ⚙️ Einstellungen | Forum-Texte, Labels, Auto-Logout |
| 🛡️ Rollen | Alle Rollen mit Permissions & Design |
| ⭐ Level | Level-Konfiguration & Status |
| 📂 Kategorien | Kategoriestruktur inkl. Hierarchie |
| 👥 Benutzer | Accounts inkl. Passwort-Hashes |
| 💬 Threads & Posts | Alle Inhalte inkl. Tags |
| ❤️ Likes & Reaktionen | Likes, Reaktionen, Benachrichtigungen |
| ✉️ Privatnachrichten | Alle DM-Konversationen |
| 🚩 Meldungen | Gemeldete Beiträge inkl. Status |
---
## 🎨 Rollen & Berechtigungen
### Superadmin — Sonderfall
Der Superadmin ist **immer** an den WordPress-Administrator gebunden:
- Wird bei jedem Seitenaufruf automatisch synchronisiert
- Kann nicht manuell vergeben oder entzogen werden
- Hat Zugriff auf alle Funktionen ohne Einschränkung
- Kann im Admin-Panel nicht gelöscht oder bearbeitet werden
### Rollen-Hierarchie
Höherer `level`-Wert = mehr Rechte. Wenn eine Kategorie eine Mindest-Rolle hat, müssen Nutzer mindestens dieses Level haben um dort zu posten.
### Eigene Rollen erstellen
1. WP-Admin → Business Forum → **Rollen****+ Neue Rolle**
2. Rollen-Schlüssel vergeben (z.B. `trusted_member`) — kann nicht geändert werden
3. Anzeigename, Level (zwischen `member` = 10 und `admin` = 80), Farbe, Icon, Permissions
4. Speichern
---
## 📊 Level-System
Das Level-System ist optional und kann jederzeit ein- oder ausgeschaltet werden. Es basiert ausschließlich auf der Anzahl der Beiträge eines Nutzers.
### Level-Badge
Wird auf der Profil-Seite, in Posts und auf der Mitgliederliste angezeigt.
### Fortschrittsbalken
Auf der eigenen Profil-Seite wird angezeigt:
- Aktuelles Level mit Badge
- Anzahl der benötigten Beiträge bis zum nächsten Level
- Fortschrittsbalken in der Levelfarbe
### Konfiguration
WP-Admin → Business Forum → **Level** → Neue Einträge hinzufügen oder bestehende bearbeiten.
---
## 🏷️ BBCode-Referenz
Nutzer können in Threads und Posts folgende Formatierungen verwenden:
### Text-Formatierung
```
[b]Fett[/b]
[i]Kursiv[/i]
[u]Unterstrichen[/u]
[s]Durchgestrichen[/s]
[h2]Überschrift 2[/h2]
[h3]Überschrift 3[/h3]
```
### Farbe & Größe
```
[color=red]Roter Text[/color]
[color=#00b4d8]Hex-Farbe[/color]
[size=small]Kleiner Text[/size]
[size=large]Großer Text[/size]
[size=xlarge]Sehr großer Text[/size]
```
Erlaubte Farbnamen: `red`, `blue`, `green`, `orange`, `yellow`, `purple`, `pink`, `cyan`, `white`, `gray`, `black`, `gold`, `silver`, `lime`, `teal`, `navy`
### Links & Medien
```
[url=https://beispiel.de]Link-Text[/url]
[url]https://beispiel.de[/url]
[img]https://beispiel.de/bild.jpg[/img]
```
### Code
```
[code]
function helloWorld() {
echo "Hallo Welt!";
}
[/code]
Inline: [icode]$variable[/icode]
```
### Zitat
```
[quote]Allgemeines Zitat[/quote]
[quote=M_Viper]Zitat von M_Viper[/quote]
```
### Spoiler
```
[spoiler]Versteckter Inhalt[/spoiler]
[spoiler=Titel]Inhalt mit Titel[/spoiler]
```
### Listen
```
[list]
[*] Erstes Element
[*] Zweites Element
[/list]
[list=1]
[*] Nummeriert
[*] Liste
[/list]
```
### Ausrichtung & Trennlinie
```
[center]Zentrierter Text[/center]
[right]Rechtsbündiger Text[/right]
[hr]
```
### @Erwähnungen
```
@Benutzername
```
Wird automatisch zu einem klickbaren Profil-Link und sendet eine Benachrichtigung.
---
## 📁 Dateistruktur
```
wp-business-forum/
├── wp-business-forum.php # Plugin-Hauptdatei
├── includes/
│ ├── class-forum-db.php # Datenbankschicht (alle Abfragen)
│ ├── class-forum-auth.php # Login, Register, Session, Remember-Me
│ ├── class-forum-roles.php # Dynamisches Rollensystem
│ ├── class-forum-levels.php # Level-System
│ ├── class-forum-bbcode.php # BBCode → HTML Parser
│ ├── class-forum-shortcodes.php # Frontend-Rendering (alle Ansichten)
│ └── class-forum-ajax.php # AJAX-Handler (alle Aktionen)
├── admin/
│ ├── forum-admin.php # Admin-Panel (alle Unterseiten)
│ ├── forum-settings.php # Einstellungsseite & wbf_get_settings()
│ └── forum-setup.php # Einrichtungs-Wizard
└── assets/
├── css/
│ └── forum-style.css # Komplettes Dark-Theme (Minecraft Modern)
└── js/
└── forum-script.js # Alle Frontend-Interaktionen (jQuery)
```
---
## 🗄️ Datenbank-Tabellen
Alle Tabellen werden bei der Plugin-Aktivierung automatisch erstellt. Bestehende Tabellen werden beim Update automatisch um neue Spalten erweitert (via `ALTER TABLE`).
| Tabelle | Inhalt |
|---|---|
| `{prefix}forum_users` | Forum-Accounts (unabhängig von WP-Usern) |
| `{prefix}forum_categories` | Kategorien mit Eltern-Kind-Hierarchie |
| `{prefix}forum_threads` | Hauptthreads |
| `{prefix}forum_posts` | Antworten auf Threads |
| `{prefix}forum_likes` | Likes auf Threads und Posts |
| `{prefix}forum_tags` | Tag-Bibliothek |
| `{prefix}forum_thread_tags` | Verknüpfung Thread ↔ Tags |
| `{prefix}forum_messages` | Privatnachrichten |
| `{prefix}forum_reactions` | Emoji-Reaktionen auf Posts |
| `{prefix}forum_reports` | Gemeldete Beiträge |
| `{prefix}forum_notifications` | In-App-Benachrichtigungen |
| `{prefix}forum_remember_tokens` | Remember-Me-Tokens |
---
## 💾 Export & Import
### Export
1. WP-Admin → Business Forum → **Export / Import**
2. Gewünschte Bereiche anwählen (alle standardmäßig aktiviert)
3. **Als JSON exportieren** klicken
4. Die Datei wird sofort heruntergeladen (`wbf-backup-DATUM.json`)
### Import
1. WP-Admin → Business Forum → **Export / Import**
2. Backup-Datei auswählen (`.json`)
3. Überschreiben-Optionen nach Bedarf aktivieren
4. **Importieren** klicken
> ⚠️ **Hinweis:** Der Import von Nutzern enthält Passwort-Hashes und funktioniert für Migrationen zwischen WordPress-Sites. Superadmin-Status wird beim Import nie übertragen — nur der WP-Administrator erhält automatisch Superadmin-Rechte.
### Überschreiben-Optionen
| Option | Effekt |
|---|---|
| Kategorien überschreiben | Löscht alle bestehenden Kategorien vor dem Import |
| Benutzer aktualisieren | Aktualisiert vorhandene Accounts (gleicher Username) |
| Threads & Posts überschreiben | Löscht alle Threads, Posts, Likes und Reaktionen |
| Privatnachrichten überschreiben | Löscht alle DMs vor dem Import |
| Meldungen überschreiben | Löscht alle Meldungen vor dem Import |
---
## ❓ FAQ
**Brauchen Forum-Nutzer einen WordPress-Account?**
Nein. Das Forum hat ein komplett eigenständiges Login-System. Forum-Nutzer können sich direkt im Frontend registrieren ohne Zugang zum WordPress-Backend.
**Wie werde ich Superadmin?**
Registriere dich im Forum mit derselben E-Mail-Adresse wie dein WordPress-Administratorkonto. Das Plugin erkennt dies automatisch. Falls du bereits ein Forum-Konto mit einer anderen E-Mail hast, kannst du dieses entweder im Setup-Wizard hochstufen oder direkt in der Datenbank das `role`-Feld auf `superadmin` setzen.
**Kann ich mehrere Superadmins haben?**
Nein. Der Superadmin-Status ist fest an das WordPress-Administratorkonto gebunden. Du kannst jedoch mehrere Nutzer auf die Rolle `Admin` (Level 80) setzen — diese haben nahezu dieselben Rechte.
**Funktioniert das Plugin mit Caching-Plugins?**
Ja, grundsätzlich. Der Logout-Button nutzt einen direkten Server-Link (`?wbf_do_logout=1`) statt AJAX und ist daher Caching-sicher. Falls du Probleme mit veralteten Nonces hast, deaktiviere das Caching für die Forum-Seite in deinem Caching-Plugin.
**Wie passe ich das Design an?**
Das Plugin enthält ein vollständiges Dark-Theme (`forum-style.css`) passend zum "Minecraft Modern Theme"-Stil. Für eigene Anpassungen füge dein CSS in der WordPress-Customizer oder einer Custom-CSS-Datei hinzu und verwende die CSS-Custom-Properties des Plugins (z.B. `--c-primary`, `--c-surface`).
**Welche E-Mail-Konfiguration wird benötigt?**
Das Plugin nutzt `wp_mail()` — denselben Mechanismus wie WordPress selbst. Wenn dein WordPress bereits E-Mails senden kann (z.B. für Passwort-Zurücksetzen), funktionieren auch die Forum-Benachrichtigungen. Für zuverlässige E-Mail-Zustellung empfiehlt sich ein SMTP-Plugin wie WP Mail SMTP.
**Wie lösche ich alle Forum-Daten?**
Deaktiviere und lösche das Plugin. Die Datenbanktabellen werden dabei **nicht** automatisch gelöscht (WordPress-Standard). Um die Tabellen zu entfernen, führe in phpMyAdmin oder WP-CLI folgende Abfragen aus:
```sql
DROP TABLE IF EXISTS
wp_forum_users, wp_forum_categories, wp_forum_threads, wp_forum_posts,
wp_forum_likes, wp_forum_tags, wp_forum_thread_tags, wp_forum_messages,
wp_forum_reactions, wp_forum_reports, wp_forum_notifications, wp_forum_remember_tokens;
```
---
*Entwickelt mit ❤️ für die WordPress-Community*