Backend‑Hooks
Über WordPress‑ähnliche Actions und Filter in die Core‑ und SaaS‑Events von Booknetic einklinken, um das Verhalten anzupassen.
Über WordPress‑ähnliche Actions und Filter in die Core‑ und SaaS‑Events von Booknetic einklinken, um das Verhalten anzupassen.
Booknetic enthält ein umfangreiches Set an WordPress-kompatiblen Actions und Filtern, mit denen Entwickler das Plugin erweitern, anpassen und integrieren können, ohne Core-Dateien zu verändern. Das Hook-System folgt dem bekannten WordPress-Muster do_action() und apply_filters(), sodass die Struktur vertraut wirkt, wenn du bereits mit der Entwicklung von WordPress-Plugins arbeitest.
Backend-Hooks sind die zentrale Erweiterungsschicht, um auf Lifecycle-Ereignisse zu reagieren, Daten vor dem Speichern oder Rendern zu verändern, Addons zu registrieren, Berechtigungen zu steuern und Integrationen mit externen Systemen wie CRM, Kalendern, Zahlungstools und benutzerdefinierten Admin-Oberflächen umzusetzen.
Booknetic verwendet zwei Hook-Typen:
// Eine Action anhören
add_action('bkntc_appointment_created', function ($appointmentData) {
// Deine benutzerdefinierte Logik hier
}, 10, 1);
// Einen Filter anhören
add_filter('bkntc_appointment_insert_data', function ($data) {
$data['notes'] = 'Automatisch generierte Notiz';
return $data; // Immer den modifizierten Wert zurückgeben
}, 10, 1);Filter müssen immer einen Wert zurückgeben. Wenn du vergisst, den modifizierten Wert zurückzugeben, gehen die Daten verloren und können Fehler verursachen.
Alle Booknetic-Hooks folgen einem konsistenten, präfixbasierten Namensschema:
| Präfix | Geltungsbereich |
|---|---|
bkntc_ | Hooks des Core-Plugins |
bkntcsaas_ | Hooks des SaaS-Moduls |
Actions werden verwendet, wenn du auf etwas reagieren möchtest, das innerhalb von Booknetic passiert ist.
bkntc_init
Wird ausgelöst, nachdem Booknetic vollständig geladen und initialisiert wurde. Verwende diesen Hook, wenn dein benutzerdefinierter Code davon abhängt, dass Booknetic verfügbar ist.
Parameter: Keine
add_action('bkntc_init', function () {
// Booknetic ist bereit, registriere deine benutzerdefinierte Logik
});bkntc_frontend
Wird ausgelöst, wenn eine Frontend-Seite geladen wird, die das Buchungspanel enthält.
Parameter: Keine
add_action('bkntc_frontend', function () {
// Benutzerdefinierte Frontend-Skripte oder Styles laden
wp_enqueue_script('my-custom-script', plugins_url('assets/custom.js', __FILE__));
});bkntc_backend
Wird ausgelöst, wenn das Booknetic-Admin-Panel geladen wird.
Parameter: Keine
add_action('bkntc_backend', function () {
// Benutzerdefinierte Admin-Funktionalität hinzufügen
});bkntc_cronjob
Wird während der Ausführung des Booknetic-Cronjobs ausgelöst.
Parameter: Keine
bkntc_customer_created
Wird ausgelöst, wenn ein neuer Kunde erstellt wird.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$customer_id | int | Die ID des neu erstellten Kunden |
$wp_password | string | Das WordPress-Benutzerpasswort, falls ein WordPress-Benutzer erstellt wurde |
add_action('bkntc_customer_created', function ($customerId, $wpPassword) {
// Willkommens-E-Mail senden, mit CRM synchronisieren usw.
error_log("Neuer Kunde erstellt: #$customerId");
}, 10, 2);bkntc_customer_saved
Wird ausgelöst, nachdem Kundendaten gespeichert wurden, sowohl beim Erstellen als auch beim Aktualisieren.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$customer_id | int | Die ID des gespeicherten Kunden |
add_action('bkntc_customer_saved', function ($customerId) {
// Aktualisierte Kundendaten mit externem System synchronisieren
}, 10, 1);bkntc_customer_before_edit
Wird ausgelöst, bevor ein Kundendatensatz aktualisiert wird. Das ist nützlich, wenn du den alten Zustand erfassen musst, bevor Änderungen angewendet werden.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$customer_id | int | Die ID des Kunden, der bearbeitet wird |
bkntc_customer_deleted
Wird ausgelöst, wenn ein Kunde gelöscht wird.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$customer_id | int | Die ID des gelöschten Kunden |
add_action('bkntc_customer_deleted', function ($customerId) {
// Verknüpfte Daten in externen Systemen bereinigen
}, 10, 1);bkntc_customer_sign_up_confirm
Wird ausgelöst, wenn ein Kunde die Registrierung per E-Mail-Verifizierung bestätigt.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$token | string | Das Bestätigungstoken |
$customer_id | int | Die ID des bestätigten Kunden |
bkntc_customer_forgot_password
Wird ausgelöst, wenn ein Kunde eine Passwort-Zurücksetzung anfordert.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$token | string | Das Passwort-Reset-Token |
$customer_id | int | Die ID des Kunden |
bkntc_customer_reset_password
Wird ausgelöst, nachdem das Passwort eines Kunden erfolgreich zurückgesetzt wurde.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$customer_id | int | Die ID des Kunden |
bkntc_appointment_created
Wird ausgelöst, wenn ein neuer Termin erstellt wird, entweder über das Frontend-Buchungspanel oder die Backend-Administration.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$appointment_data | AppointmentRequestData | Das Objekt mit den Terminanfragedaten, das alle Termindetails enthält |
AppointmentRequestData (BookneticApp\Backend\Appointments\Helpers\AppointmentRequestData) bietet Zugriff auf:
| Eigenschaft | Typ | Beschreibung |
|---|---|---|
->appointmentId | int | Die ID des erstellten Termins |
->serviceId | int | Die ID des ausgewählten Services |
->staffId | int | Die ID des zugewiesenen Mitarbeiters |
->locationId | int | Die ID des ausgewählten Standorts |
->customerId | int | Die ID des Kunden |
->date | string | Das Termindatum im Format Y-m-d |
->startTime | string | Die Startzeit im Format H:i |
->endTime | string | Die Endzeit im Format H:i |
->paymentMethod | string | Der Schlüssel der Zahlungsmethode |
->serviceInf | Service|Collection | Das vollständige Service-Modellobjekt |
->staffInf | Staff|Collection | Das vollständige Mitarbeiter-Modellobjekt |
->locationInf | Location|Collection | Das vollständige Standort-Modellobjekt |
->appointmentInf | Appointment|Collection | Das vollständige Termin-Modellobjekt |
add_action('bkntc_appointment_created', function (AppointmentRequestData $appointmentData) {
$appointmentId = $appointmentData->appointmentId;
$serviceId = $appointmentData->serviceId;
$customerId = $appointmentData->customerId;
$serviceName = $appointmentData->serviceInf->name;
// Benachrichtigung senden, mit externem Kalender synchronisieren usw.
}, 10, 1);bkntc_backend_appointment_created
Wird speziell ausgelöst, wenn ein Termin im Admin-Panel erstellt wird, nicht über das Frontend-Buchungspanel.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$appointment_data | AppointmentRequestData | Das Objekt mit den Terminanfragedaten |
bkntc_appointment_before_edit
Wird ausgelöst, bevor ein bestehender Termin aktualisiert wird. Verwende das, wenn du den aktuellen Zustand prüfen oder erfassen musst, bevor Änderungen angewendet werden.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$appointment_obj | AppointmentRequestData | Das Objekt mit den Terminanfragedaten vor der Änderung |
add_action('bkntc_appointment_before_edit', function (AppointmentRequestData $appointmentObj) {
// Alten Zustand zum Vergleich speichern
$oldStatus = $appointmentObj->appointmentInf->status;
$oldStaffId = $appointmentObj->staffId;
}, 10, 1);bkntc_appointment_after_edit
Wird ausgelöst, nachdem ein Termin aktualisiert wurde.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$appointment_obj | AppointmentRequestData | Das aktualisierte Objekt mit den Terminanfragedaten |
bkntc_appointment_before_mutation
Wird ausgelöst, bevor ein Termin irgendeine Änderung durchläuft. Dazu gehören Statusänderungen, Bearbeitungen, Umbuchungen, Zahlungsbestätigungen und Löschungen. Das ist ein allgemeiner „vor der Änderung“-Hook.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$appointment_id | int|null | Die ID des Termins. Kann null sein, wenn der Hook während der Erstellung eines neuen Termins im Zahlungsbestätigungsfluss aufgerufen wird |
Dieser Hook wird in folgenden Kontexten ausgelöst:
bkntc_appointment_deletedadd_action('bkntc_appointment_before_mutation', function ($appointmentId) {
if ($appointmentId === null) return;
// Den aktuellen Zustand erfassen, bevor er sich ändert
$appointment = \BookneticApp\Models\Appointment::get($appointmentId);
// Alten Status speichern, mit externen Systemen synchronisieren usw.
}, 10, 1);bkntc_appointment_after_mutation
Wird ausgelöst, nachdem ein Termin eine Änderung durchlaufen hat. Wie bkntc_appointment_before_mutation wird auch dieser Hook bei Statusänderungen, Bearbeitungen, Umbuchungen, Zahlungsbestätigungen und Löschungen ausgelöst. Das ist einer der am häufigsten verwendeten Hooks in Booknetic. Addons zur Kalendersynchronisierung, für Video-Meetings und Protokollierung stützen sich oft darauf.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$appointment_id | int|null | Die ID des Termins. Ist null, wenn der Termin gelöscht wurde |
Wenn dieser Hook während einer Löschung ausgelöst wird, ist $appointment_id null, weil der Datensatz kurz vor der Entfernung steht. Wenn du die echte Termin-ID vor der Löschung brauchst, verwende bkntc_appointment_before_mutation. Wenn du löschungsspezifische Logik brauchst, verwende bkntc_appointment_deleted.
add_action('bkntc_appointment_after_mutation', function ($appointmentId) {
if ($appointmentId === null) {
// Termin wurde gelöscht — Bereinigung durchführen
return;
}
// Mit Google Calendar synchronisieren, Zoom-Meeting erstellen, Änderungen protokollieren usw.
$appointment = \BookneticApp\Models\Appointment::get($appointmentId);
}, 10, 1);bkntc_appointment_deleted
Wird ausgelöst, wenn ein Termin gelöscht wird. Dieser Hook wird ausgeführt, nachdem bkntc_appointment_before_mutation und bkntc_appointment_after_mutation für diese Löschung bereits aufgerufen wurden.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$appointment_id | int | Die ID des gelöschten Termins |
add_action('bkntc_appointment_deleted', function ($appointmentId) {
// Verknüpfte Daten in externen Systemen bereinigen
// Hinweis: Der Termindatensatz könnte zu diesem Zeitpunkt bereits aus der Datenbank gelöscht sein
}, 10, 1);bkntc_validate_appointment_reschedule
Wird während der Validierungsphase einer Terminumbuchung ausgelöst.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$appointment_arr | array | Die Umbuchungsdaten des Termins |
Diese Hooks werden während des Buchungsflusses ausgeführt, während Terminanfragedaten geladen, verarbeitet und validiert werden.
bkntc_appointment_request_data_load
Wird ausgelöst, wenn Terminanfragedaten für eine einzelne Buchungsanfrage geladen werden.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$appointment_obj | AppointmentRequestData | Das Objekt mit den Terminanfragedaten |
bkntc_appointment_requests_load
Wird ausgelöst, nachdem alle Terminanfragen geladen wurden, z. B. wenn ein Warenkorb mehrere Buchungen enthält.
Parameter: Keine
bkntc_appointment_requests_validate
Wird während der Validierung der vollständigen Sammlung von Terminanfragen ausgelöst.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$appointment_requests | AppointmentRequests | Die Instanz BookneticApp\Backend\Appointments\Helpers\AppointmentRequests, die alle Buchungsanfragen enthält |
bkntc_after_appointment_requests_validate
Wird ausgelöst, nachdem die Validierung der Terminanfragen abgeschlossen ist.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$appointment_requests | AppointmentRequests | Die Instanz BookneticApp\Backend\Appointments\Helpers\AppointmentRequests |
bkntc_appointment_request_before_data_validate
Wird ausgelöst, bevor ein einzelner Eintrag von Terminanfragedaten validiert wird.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$appointment_request_data | AppointmentRequestData | Die Instanz BookneticApp\Backend\Appointments\Helpers\AppointmentRequestData |
bkntc_appointment_request_data_validate
Wird während der Validierung eines einzelnen Eintrags von Terminanfragedaten ausgelöst.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$appointment_request_data | AppointmentRequestData | Die Instanz BookneticApp\Backend\Appointments\Helpers\AppointmentRequestData |
bkntc_handle_any_staff_on_step
Wird ausgelöst, wenn im Buchungsfluss „Beliebiger Mitarbeiter“ ausgewählt wird, sodass du das Verhalten bei der Mitarbeiterzuweisung anpassen kannst.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$steps_arr | array | Das Array der Buchungsschritte |
bkntc_booking_step_confirmation_validation
Wird während der Validierung des Bestätigungsschritts im Buchungspanel ausgelöst.
Parameter: Keine
bkntc_payment_confirmed
Wird ausgelöst, wenn eine Zahlung für einen Termin bestätigt wird.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$appointment_id | int | Die ID des Termins |
$method | string | Optionale Zahlungsmethode, z. B. 'payment_link' |
add_action('bkntc_payment_confirmed', function ($appointmentId, $method = null) {
// Rechnung erstellen, Beleg senden usw.
}, 10, 2);bkntc_payment_completed
Wird ausgelöst, wenn ein Zahlungsfluss vollständig abgeschlossen ist, einschließlich Gateway-Bestätigung.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$status | string | Der Zahlungsstatus |
$custom_data | mixed | Benutzerdefinierte Daten, die durch den Zahlungsfluss übergeben wurden |
$method | string | Der Bezeichner der Zahlungsmethode |
bkntc_payment_confirmed_backend
Wird ausgelöst, wenn eine Zahlung im Admin-Panel bestätigt wird.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$appointment_id | int | Die ID des Termins |
bkntc_payment_canceled
Wird ausgelöst, wenn eine Zahlung storniert wird.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$appointment_id | int | Die ID des Termins |
bkntc_staff_created
Wird ausgelöst, wenn ein neuer Mitarbeiter erstellt wird.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$staff_id | int | Die ID des neu erstellten Mitarbeiters |
add_action('bkntc_staff_created', function ($staffId) {
// Eine WordPress-Benutzerrolle zuweisen, Willkommens-E-Mail senden usw.
}, 10, 1);bkntc_after_request_staff_save_staff
Wird ausgelöst, nachdem ein Mitarbeiter über das Admin-Panel gespeichert wurde.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$staff_arr | array | Das Array mit den gespeicherten Mitarbeiterdaten |
bkntc_service_model_scopes
Wird ausgelöst, wenn Query-Scopes des Service-Modells angewendet werden.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$class_name | string | Der Name der Modellklasse |
bkntc_service_defaults_serviceInf
Wird ausgelöst, wenn Standardinformationen für einen Service geladen werden.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$service_obj | Service|Collection | Das Modellobjekt BookneticApp\Models\Service |
bkntc_enqueue_assets
Wird ausgelöst, wenn Assets des Booknetic-Admin-Panels enqueued werden. Verwende das, um Addon-Skripte und -Styles nur auf den Admin-Seiten zu laden, auf denen sie benötigt werden.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$module | string | Der aktuelle Modulname, z. B. 'appointments' oder 'calendar' |
$action | string | Die aktuelle Action |
$view_path | string | Der Pfad zur View-Datei |
add_action('bkntc_enqueue_assets', function ($module, $action, $viewPath) {
if ($module === 'appointments') {
wp_enqueue_script('my-addon-script', plugins_url('assets/script.js', __FILE__));
}
}, 10, 3);bkntc_module_calendar_loaded
Wird ausgelöst, wenn die View des Kalender-Moduls geladen wird.
Parameter: Keine
Diese Hooks erlauben dir, benutzerdefiniertes HTML und UI-Fragmente an bestimmten Stellen im Buchungspanel einzufügen.
bkntc_after_booking_panel_shortcode
Wird nach der Ausgabe des Buchungspanel-Shortcodes ausgelöst.
Parameter: Keine
bkntc_after_information_inputs
Wird nach den Standardfeldern im Informationsschritt des Buchungspanels ausgelöst. Das wird häufig verwendet, um benutzerdefinierte Eingabefelder hinzuzufügen.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$service_obj | Service|Collection | Das ausgewählte Modellobjekt BookneticApp\Models\Service |
add_action('bkntc_after_information_inputs', function ($serviceObj) {
echo '<div class="form-group">';
echo '<label>Spezielle Anfrage</label>';
echo '<textarea name="special_request" class="form-control"></textarea>';
echo '</div>';
}, 10, 1);bkntc_service_step_footer
Wird am unteren Ende des Service-Schritts ausgelöst.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$services_arr | array | Die Liste verfügbarer Services |
bkntc_service_extras_step_footer
Wird am unteren Ende des Service-Extras-Schritts ausgelöst.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$extras_arr | array | Die Liste der Service-Extras |
bkntc_tabitem_{tabSlug}_{slug}_{section}
Das ist ein dynamisches Hook-Muster zum Einfügen von Inhalten in Tab-Items des Admin-Panels.
Der Hook-Name wird gebildet aus:
{tabSlug} — der Kennung der Tab-Gruppe, z. B. appointments{slug} — dem spezifischen Tab-Slug, z. B. edit_details{section} — dem Abschnitt innerhalb des Tabs, z. B. duration_afterParameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$tab_item | AbstractTabItemUI | Die Instanz BookneticApp\Providers\UI\Abstracts\AbstractTabItemUI |
$func_args | array | Zusätzliche Argumente |
Beispiel:
add_action('bkntc_tabitem_appointments_edit_details_duration_after', function ($tabItem, $args) {
echo '<div class="my-custom-section">Benutzerdefinierter Inhalt hier</div>';
}, 10, 2);Filter werden verwendet, wenn du Daten verändern musst, bevor Booknetic sie speichert, rendert, zurückgibt oder an eine andere Schicht weiterreicht.
bkntc_appointment_insert_data
Verändert Termindaten, bevor sie in die Datenbank eingefügt werden.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$data | array | Die einzufügenden Termindaten |
Gibt zurück: array — Das modifizierte Datenarray
add_filter('bkntc_appointment_insert_data', function ($data) {
// Eine benutzerdefinierte Notiz zu jedem neuen Termin hinzufügen
$data['note'] = 'Über benutzerdefinierte Integration erstellt';
return $data;
}, 10, 1);bkntc_appointment_update_data
Verändert Termindaten, bevor sie in der Datenbank aktualisiert werden.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$data | array | Die zu aktualisierenden Termindaten |
Gibt zurück: array
bkntc_appointment_reschedule
Verändert Termindaten während einer Umbuchung.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$data | array | Die Umbuchungsdaten |
Gibt zurück: array
bkntc_appointment_data_service_extras
Verändert Service-Extras-Daten für einen Termin.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$extras | array | Das Array der Service-Extras |
Gibt zurück: array
bkntc_selected_time_slot_info
Verändert Informationen zum ausgewählten Zeitfenster während des Buchungsflusses.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$slot_info | object | Das Objekt mit Informationen zum Zeitfenster |
Gibt zurück: object
bkntc_set_service_duration_frontend
Überschreibt die im Frontend-Buchungspanel angezeigte Service-Dauer.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$service_obj | Service|Collection | Das Modellobjekt BookneticApp\Models\Service mit Dauerinformationen |
Gibt zurück: Service\|Collection
bkntc_query_builder_global_scope
Steuert, ob der globale Query-Scope angewendet werden soll, z. B. tenant-basiertes Filtern oder mitarbeiterbasiertes Filtern.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$apply_scope | bool | Ob der globale Scope angewendet werden soll. Standardwert ist true |
Gibt zurück: bool
add_filter('bkntc_query_builder_global_scope', function ($applyScope) {
// Globalen Scope für bestimmte Operationen umgehen
return false;
}, 10, 1);bkntc_booking_panel_render_staff_info
Verändert Mitarbeiterinformationen, die im Mitarbeiterauswahlschritt des Buchungspanels angezeigt werden.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$staff_info | array | Das Array mit Mitarbeiterdaten |
Gibt zurück: array
add_filter('bkntc_booking_panel_render_staff_info', function ($staffInfo) {
// Ein benutzerdefiniertes Badge hinzufügen oder Anzeigedaten verändern
foreach ($staffInfo as &$staff) {
$staff['name'] .= ' (Verfügbar)';
}
return $staffInfo;
}, 10, 1);bkntc_booking_panel_render_services_info
Verändert Service-Informationen, die im Serviceauswahlschritt des Buchungspanels angezeigt werden.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$services_info | array | Das Array mit Servicedaten |
Gibt zurück: array
bkntc_booking_panel_render_service_extras_info
Verändert Informationen zu Service-Extras, die im Buchungspanel angezeigt werden.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$extras_info | array | Das Array mit den Daten der Service-Extras |
Gibt zurück: array
bkntc_booking_panel_information_step_parameters
Verändert die Parameter, die an die View des Informationsschritts übergeben werden.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$params | array | Das Parameterarray der View |
Gibt zurück: array
bkntc_extras_step_components
Verändert die Komponenten, die im Extras-Schritt gerendert werden.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$components | array | Die Komponenten des Extras-Schritts |
Gibt zurück: array
bkntc_busy_slots
Verändert die Liste belegter oder nicht verfügbarer Zeitfenster. Addons zur Kalendersynchronisierung verwenden das häufig, um externe Kalenderereignisse in die Verfügbarkeit von Booknetic einzuspeisen.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$busy_slots | array | Das Array der belegten Zeitfenster |
$calendar_service | CalendarService | Die Instanz BookneticApp\Backend\Appointments\Helpers\CalendarService |
Gibt zurück: array
add_filter('bkntc_busy_slots', function ($busySlots, CalendarService $calendarService) {
// Externe Kalenderereignisse als belegte Zeitfenster hinzufügen
$busySlots[] = [
'start_time' => '09:00',
'end_time' => '10:00',
'date' => '2025-01-15',
'staff_id' => 1,
];
return $busySlots;
}, 10, 2);bkntc_show_busy_time_slot
Steuert, ob vollständig ausgebuchte Zeitfenster im Buchungspanel trotzdem sichtbar sein sollen.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$show | bool | Ob belegte Zeitfenster angezeigt werden sollen. Der Standardwert hängt von den Einstellungen ab |
Gibt zurück: bool
bkntc_calendar_service_disable_slot
Steuert, ob ein bestimmtes Zeitfenster deaktiviert und im Buchungspanel nicht auswählbar sein soll.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$disable | bool | Ob das Zeitfenster deaktiviert werden soll |
Gibt zurück: bool
bkntc_calendar_events
Verändert Ereignisse, die im Admin-Kalender angezeigt werden. Addons zur Kalendersynchronisierung verwenden das, um externe Ereignisse neben nativen Booknetic-Terminen anzuzeigen.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$events | array | Das Array der Kalenderereignisse |
$start_time | string | Die Startzeit der Kalenderansicht |
$end_time | string | Die Endzeit der Kalenderansicht |
$staff_filter | mixed | Der aktive Mitarbeiterfilter |
Gibt zurück: array
add_filter('bkntc_calendar_events', function ($events, $startTime, $endTime, $staffFilter) {
// Ereignisse aus externer Quelle hinzufügen
$events[] = [
'id' => 'external_1',
'title' => 'Externes Ereignis',
'start' => '2025-01-15T09:00:00',
'end' => '2025-01-15T10:00:00',
'color' => '#ff9800',
];
return $events;
}, 10, 4);bkntc_filter_calendar_event_object
Verändert ein einzelnes Kalenderereignisobjekt, bevor es gerendert wird.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$event | array | Die Daten des Kalenderereignisses |
Gibt zurück: array
bkntc_post_step_verification
Fügt benutzerdefinierte Verifizierungslogik hinzu, nachdem ein Buchungsschritt abgeschickt wurde. Gibt false zurück, um den Fortschritt zum nächsten Schritt zu blockieren.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$verified | bool | Ob der Schritt die Verifizierung bestanden hat |
Gibt zurück: bool
bkntc_pre_step_verification
Fügt benutzerdefinierte Verifizierungslogik hinzu, bevor ein Buchungsschritt geladen wird.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$verified | bool | Ob der Schritt fortgesetzt werden soll |
Gibt zurück: bool
bkntc_hide_method_selecting
Steuert, ob die Auswahl der Zahlungsmethode im Buchungspanel ausgeblendet werden soll.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$hide | bool | Ob die Auswahl der Zahlungsmethode ausgeblendet werden soll |
Gibt zurück: bool
bkntc_user_capability_filter
Überschreibt Capability-Prüfungen für Benutzer. Das wird von Addons wie User Role Manager verwendet, um benutzerdefinierte Berechtigungslogik umzusetzen.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$can | bool | Ob der Benutzer die Capability hat. Standardwert ist true |
$capability | string | Die geprüfte Capability |
Gibt zurück: bool
add_filter('bkntc_user_capability_filter', function ($can, $capability) {
// Eine bestimmte Capability für Nicht-Administratoren einschränken
if ($capability === 'appointments_delete' && !current_user_can('administrator')) {
return false;
}
return $can;
}, 10, 2);bkntc_capability_limit_filter
Überschreibt Capability-Limits wie die maximale Anzahl von Terminen oder Mitarbeitern.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$limit | int | Der aktuelle Grenzwert |
Gibt zurück: int
bkntc_tenant_capability_filter
Überschreibt tenantbezogene Capability-Prüfungen. Im SaaS-Modus wird das verwendet, um den Zugriff auf Funktionen anhand der Plan-Capabilities zu steuern.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$can | bool | Ob der Tenant die Capability hat |
Gibt zurück: bool
bkntc_appointment_statuses
Verändert die Liste der verfügbaren Terminstatus. Dieser Hook wird verwendet, wenn du benutzerdefinierte Terminstatus registrieren möchtest.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$statuses | array | Das Array der Statusdefinitionen |
Gibt zurück: array
Jeder Statuseintrag sollte dieser Struktur folgen:
add_filter('bkntc_appointment_statuses', function ($statuses) {
$statuses[] = [
'slug' => 'in_progress',
'title' => 'In Bearbeitung',
'color' => '#2196F3',
'icon' => 'fa fa-spinner',
'busy' => true,
];
return $statuses;
}, 10, 1);bkntc_price_name
Verändert, wie ein Preislabel angezeigt wird.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$name | string | Der angezeigte Preisname |
Gibt zurück: string
bkntc_whitelist_translation_tables
Fügt Datenbanktabellen zur Übersetzungs-Whitelist hinzu, damit Addon-Daten an der Mehrsprachigkeitsfunktion teilnehmen können.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$tables | array | Das Array zulässiger Tabellennamen |
Gibt zurück: array
bkntc_add_tables_for_export
Fügt benutzerdefinierte Datenbanktabellen zum Backup- und Exportprozess hinzu.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$tables | array | Das Array der zu exportierenden Tabellennamen |
Gibt zurück: array
add_filter('bkntc_add_tables_for_export', function ($tables) {
$tables[] = 'my_addon_table';
return $tables;
}, 10, 1);bkntc_labels_settings_translates
Verändert übersetzbare Einstellungen für Buchungslabels.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$labels | array | Das Array der Label-Übersetzungen |
Gibt zurück: array
bkntc_save_booking_labels_settings
Verändert Label-Daten, bevor sie gespeichert werden.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$labels | array | Die zu speichernden Label-Daten |
Gibt zurück: array
bkntc_localization
Fügt Lokalisierungsstrings hinzu oder verändert sie, die an das JavaScript des Admin-Panels übergeben werden. Verwende diesen Hook, um die Strings deines Addons für die Frontend-Oberfläche bereitzustellen.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$strings | array | Das Key-Value-Array der Lokalisierung |
Gibt zurück: array
add_filter('bkntc_localization', function ($strings) {
$strings['my_addon_label'] = __('Mein benutzerdefiniertes Label', 'my-addon');
$strings['my_addon_confirm'] = __('Bist du sicher?', 'my-addon');
return $strings;
}, 10, 1);bkntc_frontend_localization
Funktioniert wie bkntc_localization, aber für das JavaScript des Frontend-Buchungspanels.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$strings | array | Das Key-Value-Array der Lokalisierung |
Gibt zurück: array
bkntc_response
Verändert AJAX-Response-Daten, bevor sie an den Client zurückgegeben werden.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$response | array | Das Array der Response-Daten |
Gibt zurück: array
bkntc_after_frontend_request_{method}
Ein dynamischer Filter, der ausgelöst wird, nachdem eine Frontend-AJAX-Anfrage verarbeitet wurde. {method} wird durch den tatsächlichen Namen der AJAX-Methode ersetzt.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$result | mixed | Das Ergebnis der Anfrage |
Gibt zurück: mixed
bkntc_booking_panel_assets
Verändert die Liste der JavaScript- und CSS-Assets, die im Buchungspanel geladen werden.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$assets | array | Das Array der Asset-Definitionen |
Gibt zurück: array
add_filter('bkntc_booking_panel_assets', function ($assets) {
$assets[] = [
'type' => 'js',
'url' => plugins_url('assets/my-booking-addon.js', __FILE__),
];
$assets[] = [
'type' => 'css',
'url' => plugins_url('assets/my-booking-addon.css', __FILE__),
];
return $assets;
}, 10, 1);bkntc_addons_load
Registriert dein Addon in Booknetic. Das ist der zentrale Integrations-Hook, der von jedem Addon-Loader verwendet wird.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$addons | array | Das Array registrierter Addon-Klassennamen |
Gibt zurück: array
add_filter('bkntc_addons_load', function ($addons) {
$addons[] = \BookneticAddon\MyAddon\MyAddonLoader::class;
return $addons;
}, 10, 1);bkntc_short_code_before_replace
Verändert Shortcode-Inhalte, bevor Shortcode-Platzhalter durch tatsächliche Werte ersetzt werden.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$content | string | Der Inhalt mit Shortcode-Platzhaltern |
Gibt zurück: string
bkntc_short_code_after_replace
Verändert Shortcode-Inhalte, nachdem alle Platzhalter ersetzt wurden.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$content | string | Der Inhalt mit ersetzten Shortcodes |
Gibt zurück: string
bkntc_datatable_after_render
Fügt benutzerdefinierten Inhalt hinzu, nachdem eine DataTable im Admin-Panel gerendert wurde. Das ist nützlich für benutzerdefinierte Spalten, Zusammenfassungszeilen oder zusätzliche UI-Fragmente.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$html | string | Der HTML-Inhalt nach der Datatable |
Gibt zurück: string
bkntc_tabitem_{tabSlug}_{slug}_{section}_before
Fügt HTML vor einem bestimmten Abschnitt innerhalb eines Tab-Items ein.
Gibt zurück: string
bkntc_tabitem_{tabSlug}_{slug}_{section}_end
Fügt HTML am Ende eines bestimmten Abschnitts innerhalb eines Tab-Items ein.
Gibt zurück: string
Diese Hooks sind verfügbar, wenn das Booknetic-SaaS-Modul aktiv ist. Sie verwenden das Präfix bkntcsaas_.
bkntcsaas_init
Wird ausgelöst, nachdem das SaaS-Modul vollständig initialisiert wurde.
Parameter: Keine
bkntcsaas_frontend
Wird ausgelöst, wenn das SaaS-Frontend geladen wird, z. B. Registrierungs- und Login-Seiten.
Parameter: Keine
bkntcsaas_backend
Wird ausgelöst, wenn das SaaS-Admin-Panel geladen wird.
Parameter: Keine
bkntcsaas_tenant_created
Wird ausgelöst, wenn ein neuer Tenant erstellt wird.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$tenant_id | int | Die ID des neu erstellten Tenants |
add_action('bkntcsaas_tenant_created', function ($tenantId) {
// Standarddaten für den neuen Tenant einrichten
// Onboarding-E-Mail senden usw.
}, 10, 1);bkntcsaas_tenant_deleted
Wird ausgelöst, wenn ein Tenant gelöscht wird.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$tenant_id | int | Die ID des gelöschten Tenants |
bkntcsaas_tenant_subscribed
Wird ausgelöst, wenn ein Tenant ein Abonnement für einen Plan abschließt.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$tenant_id | int | Die ID des Tenants |
bkntcsaas_tenant_unsubscribed
Wird ausgelöst, wenn ein Tenant-Abonnement gekündigt wird oder abläuft.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$tenant_id | int | Die ID des Tenants |
bkntcsaas_tenant_paid
Wird ausgelöst, wenn ein Tenant eine Zahlung leistet.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$tenant_id | int | Die ID des Tenants |
bkntcsaas_tenant_sign_up_confirm
Wird ausgelöst, wenn eine Registrierungsbestätigungs-E-Mail an einen Tenant gesendet wird.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$tenant_id | int | Die ID des Tenants |
bkntcsaas_tenant_sign_up_confirm_resend
Wird ausgelöst, wenn eine Registrierungsbestätigungs-E-Mail erneut gesendet wird.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$tenant_id | int | Die ID des Tenants |
bkntcsaas_tenant_sign_up_completed
Wird ausgelöst, wenn ein Tenant die Registrierung abschließt, d. h. die E-Mail verifiziert ist und das Konto aktiv ist.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$tenant_id | int | Die ID des Tenants |
bkntcsaas_tenant_reset_password
Wird ausgelöst, wenn ein Tenant eine Passwort-Zurücksetzung anfordert.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$tenant_id | int | Die ID des Tenants |
bkntcsaas_tenant_reset_password_completed
Wird ausgelöst, nachdem das Passwort eines Tenants erfolgreich zurückgesetzt wurde.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$tenant_id | int | Die ID des Tenants |
$password | string | Das neue Passwort |
bkntcsaas_tenant_deposit_paid
Wird ausgelöst, wenn eine Einzahlung eines Tenants verarbeitet wird.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$billing_id | int | Die ID des Abrechnungsdatensatzes |
bkntcsaas_tenant_deposit_added
Wird ausgelöst, wenn dem Konto eines Tenants eine Einzahlung hinzugefügt wird.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
$billing_id | int | Die ID des Abrechnungsdatensatzes |
Die Backend-Hooks von Booknetic bieten eine vollständige Erweiterungsschicht für Core-Lifecycle-Ereignisse, die Verarbeitung des Buchungsflusses, Kalenderintegration, Berechtigungen, Assets, UI-Injektion, das Laden von Addons und SaaS-Tenant-Workflows.
| Kategorie | Anzahl |
|---|---|
| Core-Actions | ~50 |
| Core-Filter | ~55 |
| SaaS-Actions | 16 |
| Dynamische Hooks (musterbasiert) | Mehrere |
| Hook | Typ | Häufiger Anwendungsfall |
|---|---|---|
bkntc_appointment_created | Action | Buchungen protokollieren, mit externen Systemen synchronisieren, benutzerdefinierte Formulardaten verarbeiten |
bkntc_appointment_after_mutation | Action | Kalendersynchronisierung, Erstellung von Video-Meetings, Protokollierung von Statusänderungen, Bereinigung nach Löschung |
bkntc_customer_created | Action | CRM-Synchronisierung, Willkommens-E-Mails, Zuweisung von Benutzerrollen |
bkntc_payment_confirmed | Action | Rechnungserstellung, Versand von Belegen, Buchhaltungssynchronisierung |
bkntc_addons_load | Filter | Ein benutzerdefiniertes Addon registrieren |
bkntc_appointment_insert_data | Filter | Termindaten vor dem Speichern verändern |
bkntc_busy_slots | Filter | Belegte Zeiten aus externen Kalendern einspeisen |
bkntc_calendar_events | Filter | Externe Ereignisse zum Admin-Kalender hinzufügen |
bkntc_appointment_statuses | Filter | Benutzerdefinierte Terminstatus hinzufügen |
bkntc_booking_panel_assets | Filter | Benutzerdefiniertes JavaScript und CSS im Buchungspanel laden |
bkntc_localization | Filter | Übersetzbare Strings für das Admin-JavaScript hinzufügen |
bkntc_user_capability_filter | Filter | Benutzerdefinierte Berechtigungslogik umsetzen |
bkntc_enqueue_assets | Action | Skripte auf bestimmten Admin-Seiten laden |