Plugin-Struktur & Model-Klassen

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