Mein erstes WordPress-Plugin (Teil 1)
So, nerd alarm: Ich muss mein erstes WordPress-Plugin schreiben. Ich hatte lange die Hände nicht mehr im Code, aber für meine Arbeit am ifR Hamburg werden wir bald mit WordPress relaunchen, damit wir ein zeitgemäßes Buchungssystem haben. Das haben wir auch schon gefunden, es ist WP Events Manager und kann dreimal mehr als wir brauchen, aber es läuft stabil und ist bezahlbar. Sehr gut.
Was es nicht kann, ist Rechnungen ausgeben. Also bastle ich ein Plugin, das sich die zwei relevanten Datenbanktabellen nimmt und die entsprechenden Infos rausliest und das ganz dann in eine druckbare Seite packt.
Das ganze wird eher ein Patch – ich möchte nicht, dass die Rechnungsnummern automatisch vergeben werden, ich möchte kein nie wieder editierbares Archiv von Rechnungen, ich möchte einfach nur eine Vorlage mit Daten füllen, die ich dann als PDF drucken kann und selber ablege. Der einzige Arbeitsschritt, den das Plugin uns abnehmen soll, ist das Holen der Daten und das Einfügen in eine Rechnungsdatei. (Bonuspunkte würde ich mir geben, wenn ich von vornherein ein PDF ausgeben lassen würde, aber ich fahre auch mit einem formatierten A4-HTML-Dokument ganz okay).
Für meine eigene Übersicht (und die Möglichkeit, dass meine programmieraffinen Leserinnen und Leser irgendwann „NEIN! MACH DAS ANDERS!“ schreien wollen) poste ich mal hier, was ich mir vorstelle und in Zukunft auch, wie es läuft.
Ich habe die folgenden zwei Datenbanken:
em_events mit den relevanten Feldern
- event_id
- event_name
- event_start_date (Beginn)
- event_rsvp_date (Anmeldeschluss)
und außerdem em_bookings mit den relevanten Feldern
- event_id (welches Event wurde gebucht?)
- booking_date (wann wurde gebucht?)
- booking_price (zu welchem Preis?)
- booking_meta
Booking_meta enthält alle für mich interessanten Angaben in einem Feld, das serialisiert wurde:
a:2:{ s:12:"registration"; a:6:{ s:9:"user_name"; s:22:"Thorsten Test"; s:10:"user_email"; s:0:""; s:12:"dbem_address"; s:12:"Hauptstr. 1"; s:8:"dbem_zip"; s:5:"33123"; s:9:"dbem_city"; s:9:"Bielefeld"; s:10:"dbem_phone"; s:0:""; } s:7:"booking"; a:2:{ s:15:"booking_comment"; s:0:""; s:10:"sicherheit"; s:0:""; } }
Soweit so gut, hier also mein Plan:
- Das Plugin braucht einen Menüpunkt im Adminbereich, dafür brauche ich:
<?php add_action('admin_menu', 'function_name'); ?>
- Das Plugin zieht sich alle Events in ein Dropdown-Feld, Vorauswahl liegt auf dem ersten Event, dessen Anmeldeschluss vergangen ist, aber dessen Start noch aussteht. Das wird eine simple Datenbankabfrage. Dafür brauche ich sowas wie
<?php $wpdb->query('select * from em_bookings where event_id = "1"'); ?>
- Und danach sollte es eigentlich nur noch darum gehen, wie ich das ganze sinnvoll ausspucken lasse… Vom UI-Flow stelle ich mir vor, dass man im Menü die Rechnungsausgabe auswählt, dann das Event aussucht und ein paar Sachen eingibt (Rechnungsnummer, mit der man anfangen möchte; wer unterschreibt; USt.-Befreiung nach welchem Paragraphen; soll das aktuelle oder ein anderes Datum genommen werden).
Übersehe ich was?
ben_
sagt:Sieht gut aus! Schön, dass Du das machst. Das freut mich sehr.