Über dieses Plugin
IDF Event Tickets verbindet The Events Calendar (StellarWP) mit WooCommerce, um Tickets für Veranstaltungen zu verkaufen. Für jedes Event können verschiedene Ticket-Typen mit individueller Kapazität und Preisgestaltung angelegt werden. Nach Kaufabschluss erhalten Kunden eine E-Mail mit individuellen Ticket-Nummern und QR-Codes. Am Veranstaltungstag kann das Event-Personal über die Admin-Oberfläche, einen Frontend-Shortcode oder die REST API einchecken.
Features
- Frontend-Buchungsblock: Shortcode
[idf_event_tickets]rendert auf der Event-Seite einen vollständigen Buchungs-Block mit Tickettyp-Auswahl, Mengen-Stepper, Verfügbarkeitsanzeige und Add-to-Cart. Verkaufszeitraum und Event-Ende werden respektiert. - Ticket-Typen pro Event: Beliebig viele Typen (z. B. Standard, VIP, Early Bird) mit individuellen Preisen, Kapazitäten und Verkaufszeiträumen — direkt im Event-Editor von The Events Calendar.
- WooCommerce-Integration: Automatische Produkt-Erstellung pro Tickettyp, Bestandssynchronisation und Bestellverarbeitung über den normalen Checkout. Beitragsbild des Events wird als Produktbild übernommen.
- QR-Code-Tickets: Eindeutige Ticket-Nummern mit QR-Codes für schnelles Einchecken am Veranstaltungstag.
- Check-in-System: Admin-Oberfläche, Frontend-Shortcode
[idf_event_checkin]und REST API für flexibles Einchecken — mit Doppel-Check-in-Schutz und Undo. - E-Mail-Benachrichtigung: Separate Ticket-E-Mail mit allen Details und QR-Codes nach Kaufabschluss.
- Order-Lifecycle-Sync: Bei Storno, Refund, Verschieben in den Papierkorb oder endgültigem Löschen einer Bestellung werden die zugehörigen Tickets automatisch storniert und die Plätze stehen sofort wieder zum Verkauf — auch bei HPOS.
- Bidirektionale Lösch-Sync: Wird ein Tickettyp im Event-Editor entfernt, wird das verknüpfte WooCommerce-Produkt mit gelöscht — und umgekehrt. Beide Datenquellen bleiben synchron.
- Direkt-URL-Schutz: Wer die Single-Product-URL eines Ticket-Produkts aufruft, wird per 301 zur Event-Seite umgeleitet — der Buchungsblock ist der einzige offizielle Verkaufsweg.
- Wartungs-Funktion: Button „Bestände neu berechnen“ auf der Settings-Seite repariert verwaiste Tickets aus historischen Order-Löschungen — idempotent, mit Statistik-Ausgabe.
- Admin-Dashboard: Übersicht aller Events mit Verkaufszahlen, Kapazität und Check-in-Quote.
- REST API: Endpunkte für Ticket-Verifizierung, Check-in, Statistiken und Teilnehmerlisten.
- Theme-Integration: Plugin liefert nur Layout-Klassen (BEM), keine eigene Typografie oder Farben — Block erbt komplett vom Theme.
- Voraussetzungen: The Events Calendar (StellarWP) und WooCommerce müssen aktiv sein. IDF Home für automatische Updates empfohlen.
- Uninstall: Optionale vollständige Datenlöschung über die Uninstall-Seite.
Changelog
v1.4.0 — 2026-06-09
Hinzugefügt
- E-Mail-Vorschau im Browser. Auf der Seite Event Tickets → E-Mails öffnen zwei Buttons („Vorschau Ticket-Mail" / „Vorschau Erinnerungs-Mail") die fertig gerenderte Mail mit Beispieldaten (Beispiel-Teilnehmer + Beispiel-QR-Code) in einem neuen Tab — ohne echten Versand und ohne Datenbankzugriff. - Neue Methode
IDF_Event_Tickets_Email::render_preview( $type ). - Ausgabe über einen capability- und nonce-geschütztenidf_et_preview-Handler inIDF_Event_Tickets_Admin::handle_form_submissions(). Die Vorschau spiegelt den zuletzt gespeicherten Stand der Vorlagen-Optionen und -Texte.
v1.3.2 — 2026-06-09
Behoben
- Logo in den E-Mails wurde beschnitten und nicht auf die eingestellte Größe skaliert. Das
<img>hatte nur einewidth, aber keineheight— Clients wie Outlook skalierten das perfullgeladene Original nicht herunter, es lief über den 600px-Container und wurde durch dessenoverflow:hidden(abgerundete Ecken) abgeschnitten. Jetzt werden die natürlichen Bildmaße ausgelesen, die proportionale Höhe zur Zielbreite berechnet und beide Maße explizit gesetzt (plusmax-width:100%, kein Hochskalieren über die native Breite).
v1.3.1 — 2026-06-09
Behoben
- Teilnehmer-hinzufügen-Tabelle war breiter als der Bildschirm. Die Eingabefelder nutzten feste WP-Breiten (
regular-text= 25em) → bei 7 Spalten lief die Tabelle horizontal aus dem Container. Felder jetzt auf relative Breite (width:100%) umgestellt, Spaltenverhältnisse über ein<colgroup>mittable-layout:fixedfixiert. Die Tabelle passt sich jetzt der verfügbaren Breite an.
v1.3.0 — 2026-06-09
Hinzugefügt
- Teilnehmerliste pro Event (neuer Menüpunkt Event Tickets → Teilnehmer). Zeigt alle gebuchten Tickets eines Events (alle Tickettypen) mit Ticketnummer, Tickettyp, Vor-/Nachname, E-Mail, Telefon, Adresse, Status und Bestell-Link. Erreichbar auch über den neuen Button „Teilnehmer" je Event-Zeile im Dashboard. - Manuelles Hinzufügen: Unter der Liste lassen sich beliebig viele Teilnehmer-Zeilen (Vorname, Name, E-Mail, Telefon, Straße, PLZ, Ort) erfassen. Jede Zeile wird als echte, abgeschlossene WooCommerce-Bestellung (Menge 1) gebucht — die bestehenden Completed-Hooks legen Ticket inkl. QR-Code an, verschicken die Ticket-Mail und buchen den Bestand ab. Preis pro Lauf wählbar: kostenlos (0 €) oder regulärer Ticketpreis. - Neue Methode
IDF_Event_Tickets_WooCommerce_Integration::create_manual_attendee_order(). Setzt bewusst genau einen Status-Wechsel aufcompleted, damit die Attendee-Erzeugung nicht doppelt feuert. - Neue Actionidf/event-tickets/manual_attendee_order_created. - Einzelverkauf pro Tickettyp (max. 1 Ticket pro Bestellung). Neue Checkbox „Einzelverkauf" in der Tickettyp-Metabox; sie wird auf das verknüpfte Woo-Produkt als
sold_individuallyübertragen. Im Buchungsblock entfällt dann der Mengen-Stepper (Menge fix 1). Neue Spaltesold_individuallyin der Types-Tabelle (Auto-Migration bei Bestandsinstallationen, gated überidf_event_tickets_db_version).
Geändert
- Ticket-Produkte werden jetzt immer virtuell angelegt (Create und Update) — keine Versandkosten, kein Versand-Tab.
virtualundsold_individuallywerden bei jedem Event-Save nachgezogen (Event = Single Source of Truth).
v1.2.0 — 2026-06-04
Hinzugefügt
- Editierbare E-Mail-Vorlage (analog idf-assessment). Neuer Menüpunkt Event Tickets → E-Mails mit zentral konfigurierbarem Layout (Logo, Header-Ausrichtung, Schriftfamilie), Farbpalette (Akzent, Hintergründe, Textfarbe, Button-Farbe/-Rundung), Absender (Name + Adresse) und freien Texten (Betreff, Header-Titel, Anrede, Fließtext, Fußzeile). - Die bisher hartcodierte Ticket-Bestätigungs-Mail wird jetzt aus dieser Vorlage gerendert; der Ticket-/QR-Block wird automatisch eingebettet. - Platzhalter für die Ticket-Mail:
{{name}},{{site_name}},{{site_url}}. - Neue MethodenIDF_Event_Tickets_Email::get_template_options(),get_ticket_texts(),get_reminder_texts()und ein gemeinsamerrender_template(). - Erinnerungs-E-Mail (Followup). Erinnert Teilnehmer vor Veranstaltungsbeginn an ihre Teilnahme — wahlweise inkl. Ticketnummer und QR-Code. - Globaler Vorlauf (z. B. „2 Tage vor Beginn", Einheit Stunden/Tage) plus eigene Texte und optionaler CTA-Button zur Event-Seite. - Pro-Event-Override über die Metabox „Erinnerungs-E-Mail" im Event-Editor: Erinnerung global/aktiv/deaktiviert schalten und eigenen Vorlauf setzen. - Versand über stündlichen WP-Cron (
idf_event_tickets_reminder_cron). Event-Startzeit kommt aus The Events Calendar (_EventStartDateUTC, Fallback_EventStartDate). - Neue KlasseIDF_Event_Tickets_Remindersmitrun(),get_effective_settings(),get_event_start_ts(). - Neue Actionsidf/event-tickets/reminder_sentundidf/event-tickets/reminders_processed. - Neue Attendees-Spalte
reminder_sent_at(markiert versendete Erinnerungen, verhindert Doppelversand). Wird bei Bestandsinstallationen peradmin_init-DB-Upgrade (gated überidf_event_tickets_db_version) nachgerüstet.
Geändert
send_ticket_email()nutzt jetzt Absender, Betreff und Texte aus den E-Mail-Einstellungen statt fester Vorgaben. Stornierte Attendees werden im Ticket-Block nicht mehr ausgegeben.- Aktivierung registriert den Erinnerungs-Cron und hält
idf_event_tickets_db_versionfest; Deaktivierung und Uninstall deregistrieren den Cron und räumen die neuen Optionen mit ab.
Hinweis
- Die Erinnerung ist nach dem Update standardmäßig deaktiviert — erst unter „Event Tickets → E-Mails" aktivieren (und ggf. pro Event übersteuern).
v1.1.10 — 2026-05-06
Hinzugefügt
- Cleanup historischer verwaister Attendees: v1.1.9 hat das Loch geschlossen, durch das Tickets nach Bestellung-Löschung blockiert blieben — repariert aber nur Bestellungen, die nach dem Update gelöscht wurden. Diese Version räumt jetzt auch alte Datenbestände auf. - Neue Methode
IDF_Event_Tickets_WooCommerce_Integration::cleanup_orphan_attendees(). Geht über alle nicht-stornierten Attendees, prüft pro Order viawc_get_order(klassisch + HPOS), ob sie noch existiert. Verwaiste Orders → Attendees aufcancelled,soldaus aktiver Attendee-Zählung neu setzen, Woo-Produkt-Bestand neu rechnen. - Auto-Migration: läuft beim ersten Admin-Pageload nach dem Update einmal pro Site automatisch (admin_init-Hook, geschützt peridf_event_tickets_orphan_cleanup_done-Option mit Plugin-Version als Wert). Damit werden alle Customer-Sites beim nächsten WP-Admin-Aufruf sauber, ohne Eingriff. - Manueller Re-Run: Button „Bestände neu berechnen" auf der Settings-Seite (Capabilityidf_event_tickets_manage, Nonce-geschützt). Zeigt nach dem Lauf eine Statistik (geprüfte Bestellungen, gefundene Verwaiste, stornierte Tickets, neu berechnete Tickettypen). - Neue Actionidf/event-tickets/orphan_attendees_cleanedmit Statistik-Array. - Wartungs-Sektion auf der Settings-Seite mit Erklärungstext, letzten Lauf-Stats und Button.
Geändert
cleanup_orphan_attendees()ist idempotent — beliebig oft aufrufbar, ein zweiter Lauf findet nichts mehr zu reparieren.- Uninstall räumt jetzt auch die neuen Optionen
idf_event_tickets_orphan_cleanup_doneundidf_event_tickets_orphan_cleanup_last_statsmit ab.
Hinweis
- Wer das Plugin nach v1.1.10 noch einmal manuell triggern möchte (z. B. nach einer großen Order-Aufräum-Aktion in WooCommerce), kann den Button auf der Settings-Seite jederzeit klicken — das überschreibt die letzten Stats und korrigiert eventuelle neu entstandene Verwaisungen.
v1.1.9 — 2026-05-05
Behoben
- Tickets kommen nach Bestellung-Löschung wieder in die Verfügbarkeit zurück. Bisher fingen wir nur
woocommerce_order_status_cancelled/refundedab — wer eine Bestellung in den Papierkorb verschob oder endgültig löschte, hinterließ verwaiste Attendees in der Plugin-DB, dersold-Counter blieb stehen und der Woo-Produkt-Bestand wurde nicht zurückgesetzt. Im Frontend zählten die Tickets der gelöschten Order weiter als „verkauft". - Auch beim normalen Stornieren wurde der
sold-Counter bisher nicht dekrementiert —compute_stock_for_ticket_type()hat das zwar abgefangen, aber der Stats-Wert in der Tickettyp-Row lief immer weiter hoch. Wird im neuen Pfad mitkorrigiert.
Hinzugefügt
- Neue Hooks in
class-woo-integration.php: -wp_trash_post(klassischer Order-Storage, Trash) -before_delete_postmit Post-Type-Branch fürshop_order(klassischer Order-Storage, endgültiges Löschen) -woocommerce_trash_order(HPOS, Trash) -woocommerce_before_delete_order(HPOS, endgültiges Löschen) - Zentraler Helper
release_attendees_for_order( $order_id ): - Setzt aktive Attendees der Order (Statusvalid/checked_in) aufcancelled. - Dekrementiert densold-Counter pro betroffenem Tickettyp. - Berechnet den Lagerbestand neu (compute_stock_for_ticket_type) und schreibt ihn ins Woo-Produkt zurück. - Idempotent (zweiter Aufruf mit derselben Order-ID ist no-op) und re-entry-geschützt für parallele Hook-Pfade innerhalb einer Request. - Neue Action
idf/event-tickets/order_attendees_released($order_id,$released_per_type).
Geändert
on_order_cancelled()nutzt jetzt den zentralenrelease_attendees_for_order-Helper. Damit haben Storno, Refund, Trash und endgültiges Löschen identisches Verhalten.
Hinweis
- Wird eine Bestellung aus dem Papierkorb wiederhergestellt, sind die ursprünglichen Attendees auf
cancelledund werden vom Status-Wechsel aufprocessing/completedals neue Tickets neu angelegt — der Kunde behält also die Tickets, aber mit neuen Ticket-Nummern. Wer eine Order wirklich versehentlich getrasht hat, sollte sie sofort wiederherstellen, bevor neue Verkäufe die Plätze auffüllen.
v1.1.8 — 2026-05-01
Behoben
- Kritischer Hotfix –
class-frontend.phpBase64-Korruption: In v1.1.7 wurdeincludes/class-frontend.phpfälschlicherweise als Base64-Text auf dem Dateisystem gespeichert, was beim Plugin-Laden zu einem PHP Fatal Error führte. Die Datei wurde wiederhergestellt – alle v1.1.7-Features (Kostenfrei-Anzeige, Headline „Tickets für dieses Event") sind weiterhin enthalten.
v1.1.7 — 2026-04-30
Geändert
- Preisanzeige bei kostenlosen Tickets: Tickettypen mit Preis 0 € erscheinen im Buchungsblock jetzt mit dem Hinweis „Kostenfrei" statt „0,00 €". Greift sowohl in der Mehr-Typen-Auswahl als auch im Single-Type-Render.
- Default-Headline umbenannt: „Tickets für diesen Termin" → „Tickets für dieses Event". Wer den Shortcode mit eigenem
heading="…"-Attribut nutzt, ist nicht betroffen. - Einzelverkauf ohne Label: Bei
sold_individuallywird kein Label „Anzahl: 1 (Einzelverkauf)" mehr angezeigt — nur noch ein Hidden-Input für den Form-Submit, kein sichtbarer Text.
Abhängigkeiten
- IDF Home Mindestversion auf v2.0.0 angehoben (Dependency-Checker aktualisiert).
v1.1.6 — 2026-04-30
Hinzugefügt
- Direkt-URL-Redirect: Wer die Single-Product-URL eines Ticket-Produkts aufruft (z. B.
/produkt/event-titel-vip/), wird per 301 zur Event-Seite umgeleitet. Damit läuft die Buchung immer über den[idf_event_tickets]-Block, nicht über die rohe Woo-Produktseite. Filteridf/event-tickets/product_redirect_urlerlaubt Custom-Targets.
Geändert
- Bei
sold_individuallywird der Mengen-Stepper komplett ersetzt durch ein hiddenquantity=1-Field plus den Hinweis „Anzahl: 1 (Einzelverkauf)". Bisher hatte ich nurreadonlyam Input unddisabledam Plus-Button gesetzt — das ist Browser-Quirks ausgesetzt (Number-Input-Spinner ignoriert readonly in manchen Browsern, disabled kann durch Theme-CSS überklickbar werden). Mit dem neuen Markup gibt's keinen Weg mehr, die Menge zu ändern.
v1.1.5 — 2026-04-30
Behoben
- Frisch angelegter Tickettyp im Event-Editor erzeugte kein WooCommerce-Produkt (latent seit v1.0):
sync_woo_productslief aufsave_post_tribe_events-Priorität 10,save_ticket_metaboxauf Priorität 20. Der Sync sah die Tickettyp-Liste bevor save_ticket_metabox die neue Zeile in die DB geschrieben hatte → leerer Loop → kein Produkt. Beim zweiten Speichern hätte es geklappt — beim ersten nicht. Fix: Priorität vonsync_woo_productsauf 30 setzen, damit der Sync nachsave_ticket_metaboxläuft.
v1.1.4 — 2026-04-30
Hinzugefügt
- Bidirektionale Lösch-Sync zwischen Tickettyp und Woo-Produkt: - Wird ein Tickettyp im Event-Editor entfernt (Metabox-Zeile gelöscht), wird das verknüpfte WooCommerce-Produkt automatisch endgültig gelöscht. - Wird ein WooCommerce-Produkt mit
_idf_ticket_type_id-Verweis endgültig gelöscht, wird der zugehörige Tickettyp aus der Plugin-DB entfernt und alle aktiven Attendees aufcancelledgesetzt. - Greift nur beim endgültigen Löschen, nicht beim Trash. Trash zeigt im Frontend „Nicht verfügbar" an, Wiederherstellung bringt alles zurück. - Re-Entry-Schutz per zwei statischen Flags, damit die beiden Hooks sich nicht gegenseitig erneut auslösen.
v1.1.3 — 2026-04-30
Hinzugefügt
- Beitragsbild-Sync: Das Featured Image des Events wird beim Speichern automatisch als Produktbild in das verknüpfte WooCommerce-Produkt übernommen (Create und Update).
- Sold-individually-Support im Buchungsblock: Wenn das Woo-Produkt „Einzelverkauf – nur einmal pro Bestellung" gesetzt hat, fixiert der Stepper im Buchungsblock die Menge auf 1 (Plus-Button disabled, Input readonly). Greift sowohl beim Initial-Render als auch beim Tickettyp-Wechsel.
Behoben
- Lagerbestand-Reset bei laufenden Verkäufen: Beim Speichern des Events wurde der Bestand bisher blind auf die Kapazität zurückgesetzt — auch wenn schon Tickets verkauft waren.
compute_stock_for_ticket_type()berechnet den Bestand jetzt aus Kapazität minus aktive Attendees (Status != cancelled). Damit überschreibt der Sync nicht mehr versehentlich den von Woo dekrementierten Bestand.
Geändert
- Name und Beschreibung jetzt auch beim Update synchron: Bisher nur beim Create gesetzt — bei späteren Event-Titel-Änderungen blieb das Produkt auf dem alten Stand. Zentrale Helper
build_product_title()undbuild_product_description()für konsistente Werte. update_woo_product()akzeptiert jetzt das Event-Post-Objekt als Parameter (für Bild + Titel).
v1.1.2 — 2026-04-30
Behoben
- Root Cause für „Nicht verfügbar"-Bug im Buchungsblock:
IDF_Event_Tickets_Ticket_Manager::update_ticket_type()hattewoo_product_id(undsold) NICHT in der Update-Whitelist. Dadurch schlug der Aufruf ausclass-woo-integration.php::sync_woo_products()nach dem Anlegen eines neuen Woo-Produkts still fehl, die Tickettyp-Row blieb dauerhaft mitwoo_product_id=0. Im Frontend führte das zu „Nicht verfügbar.", weilwc_get_product(0)nichts liefert. update_woo_product()recovert jetzt, wenn das verknüpfte Woo-Produkt zwischenzeitlich gelöscht wurde — statt still zurückzukehren, wird ein neues Produkt angelegt und die ID korrekt in den Tickettyp geschrieben.
Hinzugefügt
- Self-Healing im Frontend:
prepare_ticket_type()sucht bei fehlendem Woo-Verweis automatisch ein passendes Produkt per_idf_ticket_type_id-Meta und schreibt die ID zurück in die DB. Damit heilen sich verwaiste Tickettyp-Rows beim nächsten Frontend-Aufruf von selbst — kein manueller Re-Save nötig. - Pro Tickettyp ein detaillierter Diagnose-HTML-Kommentar mit Werten für
id,name,price,capacity,sold,available,product_id,product_status,managing_stock,stock_qty,name0,name1,name2,name3 undname4. Der Grund für „Nicht verfügbar" ist jetzt im View-Source ablesbar.
Geändert
update_woo_product()schreibt_idf_event_idund_idf_ticket_type_idals Produkt-Meta idempotent nach (statt nur beim Create) — relevant für Self-Healing.
v1.1.1 — 2026-04-30
Behoben
[idf_event_tickets]lieferte „Für diesen Termin sind aktuell keine Tickets eingerichtet", obwohl Metabox-Kapazität und Woo-Produkt-Bestand korrekt gepflegt waren — Ursache: bei Tribe-Events-Calendar-Recurring-Events liefertget_the_ID()auf der URL die Kind-Instanz, der Tickettyp-DB-Eintrag hängt aber an der Parent-Event-ID.
Geändert
IDF_Event_Tickets_Frontendlöst die Event-ID jetzt schrittweise auf: (1) post_parent-Kette hochlaufen (max. 5 Schritte), (2)_EventOriginalParent-Meta von Tribe-Events-PRO, (3) Fallback per Woo-Produkt-Meta_idf_event_id.- HTML-Diagnose-Kommentar im gerenderten Block (
<!-- idf-event-tickets: event_id=… resolved=… strategy=… -->) zur Fehlersuche im Page-Source.
v1.1.0 — 2026-04-30
Hinzugefügt
- Neuer Frontend-Shortcode
[idf_event_tickets]für den Buchungs-Block auf Event-Seiten. Auf einer Event-Single-Page wird die Event-ID automatisch erkannt; außerhalb kann sie überevent_id="…"gesetzt werden. - Mehrere Tickettypen (Standard, VIP, Early Bird) werden in einem Block als Auswahl (Radios) gerendert mit gemeinsamem Mengen-Stepper und Add-to-Cart.
- Verkaufszeitraum (
sale_start/sale_end) und Event-Ende werden respektiert: außerhalb des Zeitfensters keine Buchung möglich (mit Hinweistext). - Verfügbarkeit wird live aus dem WooCommerce-Produkt-Bestand ermittelt (Fallback: Kapazität − verkauft).
- Asset-Lazy-Loading: Frontend-CSS/JS werden nur ausgeliefert, wenn der Shortcode auf der Seite vorkommt.
Geändert
- Plugin lädt zusätzlich
includes/class-frontend.phpund initialisiertIDF_Event_Tickets_Frontend.
v1.0.6
Geändert
- Auf Git-basiertes Deployment migriert (idf-ci Workflow,
readme.txt+CHANGELOG.mdals Pflichtdateien).
v1.0.5
Behoben
- WooCommerce-/Events-Calendar-Hinweis erschien nicht wenn Master-Key fehlte.
- Master-Key-Check ist jetzt non-blocking — Plugin funktioniert auch ohne Master-Key.
v1.0.4
Behoben
- Dashboard zeigte keine Events mit Tickets an (falsche Spalten-Referenz in
get_event_stats()).
v1.0.3
Behoben
- Fatal Error „Cannot redeclare class IDF_Dependency_Checker" (Dependency-Checker auf v1.5.2).
- Duplicate-Key-Bug in Activator (
KEY ticket_numberkollidierte mitUNIQUE-Constraint).
v1.0.2
Geändert
- Dependency-Checker auf v1.5.1.
plugins_loaded-Priorität von 20 auf 15 (Architektur-Standard).- Activation/Deactivation-Hooks auf Closures mit Inline-Includes umgestellt.
v1.0.1
Behoben
- Fatal Error bei Aktivierung wegen doppelter Klassendeklaration mit Master-Key.
- Dependency-Checks und Includes in
plugins_loadedverschoben.
v1.0.0
Hinzugefügt
- Erster Release.
- Ticket-Typen pro Event (Name, Preis, Kapazität, Verkaufszeitraum).
- WooCommerce-Integration (automatische Produkt-Erstellung, Bestellverarbeitung).
- Ticket-Generierung mit eindeutiger Nummer und QR-Code.
- Check-in-System (Admin, Frontend-Shortcode
[idf_event_checkin], REST API). - E-Mail-Benachrichtigung mit Ticket-Details.
- Admin-Dashboard mit Verkaufsübersicht.
- Uninstall-Seite mit optionaler Datenlöschung.