Was automatisiert werden soll
Du willst:
- Kunden sollen selbst buchen
- Termine sollen nicht doppelt belegt sein
- Dein Team soll keine Mails hin- und herschicken
- Und Du willst die Daten in der Hand behalten
Kalender, Formulare, Schnittstellen – kriegst Du alles in WordPress geregelt.
Entweder über externe APIs (Google, Outlook) oder über ein eigenes System mit interner Logik.
Ich zeig Dir beides.
Option 1: Google Calendar anbinden
Ein Kunde bucht auf Deiner Website. Der Termin landet direkt im Google-Kalender.
Dazu brauchst Du:
- ein Google-Projekt mit OAuth
- ein Token (Access & Refresh)
- einen Server-zu-Server-Call
Einfacher API-Aufruf per PHP
function ds_google_event_erstellen($summary, $start, $end) {
$token = 'DEIN_ACCESS_TOKEN';
$event = [
'summary' => $summary,
'start' => ['dateTime' => $start, 'timeZone' => 'Europe/Berlin'],
'end' => ['dateTime' => $end, 'timeZone' => 'Europe/Berlin'],
];
$response = wp_remote_post('https://www.googleapis.com/calendar/v3/calendars/primary/events', [
'headers' => [
'Authorization' => 'Bearer ' . $token,
'Content-Type' => 'application/json',
],
'body' => json_encode($event),
'timeout' => 15,
]);
return wp_remote_retrieve_body($response);
}
Wichtig:
- Token regelmäßig erneuern
- OAuth-Flow nur einmal manuell durchführen
- API-Quota im Auge behalten
Option 2: Eigene Buchungslogik in WordPress
Du willst volle Kontrolle. Kein externer Anbieter. Keine Abo-Gebühren.
Dann bau Dein System auf Basis von CPTs (Custom Post Types).
Beispiel: CPT „buchung“
function ds_buchung_posttype() {
register_post_type('buchung', [
'label' => 'Buchungen',
'public' => false,
'show_ui' => true,
'supports' => ['title', 'custom-fields'],
]);
}
add_action('init', 'ds_buchung_posttype');
Dann erfasst Du die Buchung mit Metafeldern:
ds_buchung_start
: Startzeitds_buchung_ende
: Endzeitds_kunde_email
: E-Mailds_status
: offen | bestätigt | storniert
Prüfung auf Überschneidungen
function ds_zeitraum_belegt($start, $ende) {
$args = [
'post_type' => 'buchung',
'meta_query' => [
[
'key' => 'ds_buchung_start',
'value' => $ende,
'compare' => '<',
'type' => 'DATETIME',
],
[
'key' => 'ds_buchung_ende',
'value' => $start,
'compare' => '>',
'type' => 'DATETIME',
],
],
];
$query = new WP_Query($args);
return $query->have_posts();
}
Wenn true
, ist der Slot belegt. Wenn nicht, kannst Du speichern.
Termin anlegen
function ds_buchung_speichern($start, $ende, $email) {
if (ds_zeitraum_belegt($start, $ende)) {
return false;
}
$id = wp_insert_post([
'post_type' => 'buchung',
'post_title' => 'Buchung ' . $start,
'post_status'=> 'publish',
]);
update_post_meta($id, 'ds_buchung_start', $start);
update_post_meta($id, 'ds_buchung_ende', $ende);
update_post_meta($id, 'ds_kunde_email', $email);
update_post_meta($id, 'ds_status', 'offen');
return $id;
}
Extras für KMU
- Mail-Benachrichtigung an Kunde und Team
- Admin-Dashboard mit Kalenderübersicht
- Export in iCal oder CSV
- REST-Endpunkte für externe Tools
- Automatische Erinnerung (z. B. via wp_cron)
Fazit: Extern oder Eigenbau?
Kriterium | Google/Outlook API | Eigenes System |
---|---|---|
Einrichtung | mittel | mittel |
Kontrolle | gering | hoch |
Wartung | abhängig von Drittanbieter | vollständig intern |
DSGVO | problematisch | intern steuerbar |
Skalierbarkeit | gut | hängt von Umsetzung ab |
Wenn Du’s schnell brauchst: Google API.
Wenn Du’s dauerhaft brauchst: Eigenes System.
No responses yet