Verzeichnisstruktur
womo-manager/
├── womo-manager.php Plugin-Einstiegspunkt, Konstanten, Bootstrap
├── includes/
│ ├── class-womo-plugin.php Singleton: Init, Hooks
│ ├── class-womo-install.php Tabellen (dbDelta) + Seed-Daten
│ ├── class-womo-vehicle.php Fahrzeuge CRUD
│ ├── class-womo-owner.php Eigentümer + E-Mail-Validierung
│ ├── class-womo-settings.php Historisierte Einstellungen
│ ├── class-womo-account.php Konten, Saldo-Cache
│ ├── class-womo-transaction.php Buchungen, Split, Transfer, KM
│ ├── class-womo-reservation.php Reservierungen, KM-Abrechnung
│ └── class-womo-wiki-gate.php Login-Gate für BasePress-Wiki
├── admin/ Admin-Views (in Entwicklung)
├── public/ Public-Views (in Entwicklung)
└── assets/
Model-Klassen
| Klasse |
Zweck |
Womo_Install |
Tabellen + Seed-Daten via dbDelta |
Womo_Vehicle |
Fahrzeuge CRUD |
Womo_Owner |
Eigentümer + E-Mail-Validierung + Vacation-Account-Anlage |
Womo_Settings |
Historisierte Einstellungen, get_km_rate($date) |
Womo_Account |
Konten, Saldo-Cache, recalculate_all() |
Womo_Transaction |
Buchungen, book_split(), transfer(), book_km_fee() |
Womo_Reservation |
Reservierungen, is_available(), update_km(), charge_km_fee() |
Womo_Notifications |
E-Mail-Benachrichtigungen (wp_mail()) bei neuer Reservierungsanfrage sowie Bestätigung/Stornierung; global ein-/ausschaltbar in den Plugin-Einstellungen |
Womo_Wiki_Gate |
Login-Gate für BasePress via template_redirect |
Architekturprinzipien
- Singleton-Pattern für
Womo_Plugin, Womo_Admin, Womo_Public
- Statische Model-Klassen für alle Datenbankzugriffe
- Ausschließlich
$wpdb->prepare() für parametrisierte Queries
- Immer
sanitize_*, esc_*, wp_nonce_field / check_ajax_referer
- Keine Custom Post Types – alle Daten in eigenen Tabellen