v5 ist live

BIS ZU

60% RABATT
Heißer Dezember-Sale
Launch-Sale
0 TAGE
:
0 STUNDEN
:
0 MINUTEN
:
0 SEKUNDEN
JETZT ERHALTEN percent icon

Backend‑Hooks

Über WordPress‑ähnliche Actions und Filter in die Core‑ und SaaS‑Events von Booknetic einklinken, um das Verhalten anzupassen.

Version:
Kategorien

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.

Wie Hooks funktionieren

Booknetic verwendet zwei Hook-Typen:

  • Actions erlauben dir, benutzerdefinierte Logik auszuführen, wenn ein bestimmtes Ereignis eintritt, z. B. wenn ein Termin erstellt, eine Zahlung bestätigt oder ein Kunde gelöscht wird.
  • Filter erlauben dir, einen Wert zu verändern, bevor Booknetic ihn verwendet oder zurückgibt, z. B. Termin-Einfügedaten, Kalenderereignisdaten, Assets des Buchungspanels oder Capability-Prüfungen.

Einen Hook-Listener registrieren

// 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.

Hook-Namenskonvention

Alle Booknetic-Hooks folgen einem konsistenten, präfixbasierten Namensschema:

PräfixGeltungsbereich
bkntc_Hooks des Core-Plugins
bkntcsaas_Hooks des SaaS-Moduls

Actions

Actions werden verwendet, wenn du auf etwas reagieren möchtest, das innerhalb von Booknetic passiert ist.

Initialisierung und Bootstrap

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

Kunden-Actions

bkntc_customer_created

Wird ausgelöst, wenn ein neuer Kunde erstellt wird.

Parameter:

ParameterTypBeschreibung
$customer_idintDie ID des neu erstellten Kunden
$wp_passwordstringDas 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:

ParameterTypBeschreibung
$customer_idintDie 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:

ParameterTypBeschreibung
$customer_idintDie ID des Kunden, der bearbeitet wird

bkntc_customer_deleted

Wird ausgelöst, wenn ein Kunde gelöscht wird.

Parameter:

ParameterTypBeschreibung
$customer_idintDie 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:

ParameterTypBeschreibung
$tokenstringDas Bestätigungstoken
$customer_idintDie ID des bestätigten Kunden

bkntc_customer_forgot_password

Wird ausgelöst, wenn ein Kunde eine Passwort-Zurücksetzung anfordert.

Parameter:

ParameterTypBeschreibung
$tokenstringDas Passwort-Reset-Token
$customer_idintDie ID des Kunden

bkntc_customer_reset_password

Wird ausgelöst, nachdem das Passwort eines Kunden erfolgreich zurückgesetzt wurde.

Parameter:

ParameterTypBeschreibung
$customer_idintDie ID des Kunden

Termin-Actions

bkntc_appointment_created

Wird ausgelöst, wenn ein neuer Termin erstellt wird, entweder über das Frontend-Buchungspanel oder die Backend-Administration.

Parameter:

ParameterTypBeschreibung
$appointment_dataAppointmentRequestDataDas Objekt mit den Terminanfragedaten, das alle Termindetails enthält

AppointmentRequestData (BookneticApp\Backend\Appointments\Helpers\AppointmentRequestData) bietet Zugriff auf:

EigenschaftTypBeschreibung
->appointmentIdintDie ID des erstellten Termins
->serviceIdintDie ID des ausgewählten Services
->staffIdintDie ID des zugewiesenen Mitarbeiters
->locationIdintDie ID des ausgewählten Standorts
->customerIdintDie ID des Kunden
->datestringDas Termindatum im Format Y-m-d
->startTimestringDie Startzeit im Format H:i
->endTimestringDie Endzeit im Format H:i
->paymentMethodstringDer Schlüssel der Zahlungsmethode
->serviceInfService|CollectionDas vollständige Service-Modellobjekt
->staffInfStaff|CollectionDas vollständige Mitarbeiter-Modellobjekt
->locationInfLocation|CollectionDas vollständige Standort-Modellobjekt
->appointmentInfAppointment|CollectionDas 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:

ParameterTypBeschreibung
$appointment_dataAppointmentRequestDataDas 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:

ParameterTypBeschreibung
$appointment_objAppointmentRequestDataDas 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:

ParameterTypBeschreibung
$appointment_objAppointmentRequestDataDas 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:

ParameterTypBeschreibung
$appointment_idint|nullDie 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:

  • Statusänderungen wie genehmigen, stornieren, ablehnen und ähnliche Übergänge
  • Terminbearbeitungen wie Änderungen an Datum, Uhrzeit, Mitarbeiter oder Service
  • Terminumbuchungen
  • Zahlungsbestätigung, wenn der Status nach der Zahlung aktualisiert wird
  • Terminlöschung, vor bkntc_appointment_deleted
add_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:

ParameterTypBeschreibung
$appointment_idint|nullDie 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:

ParameterTypBeschreibung
$appointment_idintDie 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:

ParameterTypBeschreibung
$appointment_arrarrayDie Umbuchungsdaten des Termins

Terminanfrage-Actions

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:

ParameterTypBeschreibung
$appointment_objAppointmentRequestDataDas 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:

ParameterTypBeschreibung
$appointment_requestsAppointmentRequestsDie 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:

ParameterTypBeschreibung
$appointment_requestsAppointmentRequestsDie Instanz BookneticApp\Backend\Appointments\Helpers\AppointmentRequests

bkntc_appointment_request_before_data_validate

Wird ausgelöst, bevor ein einzelner Eintrag von Terminanfragedaten validiert wird.

Parameter:

ParameterTypBeschreibung
$appointment_request_dataAppointmentRequestDataDie Instanz BookneticApp\Backend\Appointments\Helpers\AppointmentRequestData

bkntc_appointment_request_data_validate

Wird während der Validierung eines einzelnen Eintrags von Terminanfragedaten ausgelöst.

Parameter:

ParameterTypBeschreibung
$appointment_request_dataAppointmentRequestDataDie 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:

ParameterTypBeschreibung
$steps_arrarrayDas Array der Buchungsschritte

bkntc_booking_step_confirmation_validation

Wird während der Validierung des Bestätigungsschritts im Buchungspanel ausgelöst.

Parameter: Keine

Zahlungs-Actions

bkntc_payment_confirmed

Wird ausgelöst, wenn eine Zahlung für einen Termin bestätigt wird.

Parameter:

ParameterTypBeschreibung
$appointment_idintDie ID des Termins
$methodstringOptionale 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:

ParameterTypBeschreibung
$statusstringDer Zahlungsstatus
$custom_datamixedBenutzerdefinierte Daten, die durch den Zahlungsfluss übergeben wurden
$methodstringDer Bezeichner der Zahlungsmethode

bkntc_payment_confirmed_backend

Wird ausgelöst, wenn eine Zahlung im Admin-Panel bestätigt wird.

Parameter:

ParameterTypBeschreibung
$appointment_idintDie ID des Termins

bkntc_payment_canceled

Wird ausgelöst, wenn eine Zahlung storniert wird.

Parameter:

ParameterTypBeschreibung
$appointment_idintDie ID des Termins

Mitarbeiter-Actions

bkntc_staff_created

Wird ausgelöst, wenn ein neuer Mitarbeiter erstellt wird.

Parameter:

ParameterTypBeschreibung
$staff_idintDie 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:

ParameterTypBeschreibung
$staff_arrarrayDas Array mit den gespeicherten Mitarbeiterdaten

Service- und UI-Actions

bkntc_service_model_scopes

Wird ausgelöst, wenn Query-Scopes des Service-Modells angewendet werden.

Parameter:

ParameterTypBeschreibung
$class_namestringDer Name der Modellklasse

bkntc_service_defaults_serviceInf

Wird ausgelöst, wenn Standardinformationen für einen Service geladen werden.

Parameter:

ParameterTypBeschreibung
$service_objService|CollectionDas 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:

ParameterTypBeschreibung
$modulestringDer aktuelle Modulname, z. B. 'appointments' oder 'calendar'
$actionstringDie aktuelle Action
$view_pathstringDer 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

Buchungspanel-View-Actions

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:

ParameterTypBeschreibung
$service_objService|CollectionDas 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:

ParameterTypBeschreibung
$services_arrarrayDie Liste verfügbarer Services

bkntc_service_extras_step_footer

Wird am unteren Ende des Service-Extras-Schritts ausgelöst.

Parameter:

ParameterTypBeschreibung
$extras_arrarrayDie Liste der Service-Extras

Dynamische Tab-Item-Actions

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_after

Parameter:

ParameterTypBeschreibung
$tab_itemAbstractTabItemUIDie Instanz BookneticApp\Providers\UI\Abstracts\AbstractTabItemUI
$func_argsarrayZusä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

Filter werden verwendet, wenn du Daten verändern musst, bevor Booknetic sie speichert, rendert, zurückgibt oder an eine andere Schicht weiterreicht.

Query- und Daten-Filter

bkntc_appointment_insert_data

Verändert Termindaten, bevor sie in die Datenbank eingefügt werden.

Parameter:

ParameterTypBeschreibung
$dataarrayDie 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:

ParameterTypBeschreibung
$dataarrayDie zu aktualisierenden Termindaten

Gibt zurück: array

bkntc_appointment_reschedule

Verändert Termindaten während einer Umbuchung.

Parameter:

ParameterTypBeschreibung
$dataarrayDie Umbuchungsdaten

Gibt zurück: array

bkntc_appointment_data_service_extras

Verändert Service-Extras-Daten für einen Termin.

Parameter:

ParameterTypBeschreibung
$extrasarrayDas 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:

ParameterTypBeschreibung
$slot_infoobjectDas Objekt mit Informationen zum Zeitfenster

Gibt zurück: object

bkntc_set_service_duration_frontend

Überschreibt die im Frontend-Buchungspanel angezeigte Service-Dauer.

Parameter:

ParameterTypBeschreibung
$service_objService|CollectionDas 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:

ParameterTypBeschreibung
$apply_scopeboolOb 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);

Filter für das Rendering des Buchungspanels

bkntc_booking_panel_render_staff_info

Verändert Mitarbeiterinformationen, die im Mitarbeiterauswahlschritt des Buchungspanels angezeigt werden.

Parameter:

ParameterTypBeschreibung
$staff_infoarrayDas 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:

ParameterTypBeschreibung
$services_infoarrayDas 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:

ParameterTypBeschreibung
$extras_infoarrayDas 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:

ParameterTypBeschreibung
$paramsarrayDas Parameterarray der View

Gibt zurück: array

bkntc_extras_step_components

Verändert die Komponenten, die im Extras-Schritt gerendert werden.

Parameter:

ParameterTypBeschreibung
$componentsarrayDie Komponenten des Extras-Schritts

Gibt zurück: array

Kalender- und Zeitfenster-Filter

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:

ParameterTypBeschreibung
$busy_slotsarrayDas Array der belegten Zeitfenster
$calendar_serviceCalendarServiceDie 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:

ParameterTypBeschreibung
$showboolOb 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:

ParameterTypBeschreibung
$disableboolOb 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:

ParameterTypBeschreibung
$eventsarrayDas Array der Kalenderereignisse
$start_timestringDie Startzeit der Kalenderansicht
$end_timestringDie Endzeit der Kalenderansicht
$staff_filtermixedDer 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:

ParameterTypBeschreibung
$eventarrayDie Daten des Kalenderereignisses

Gibt zurück: array

Filter zur Schrittverifizierung

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:

ParameterTypBeschreibung
$verifiedboolOb 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:

ParameterTypBeschreibung
$verifiedboolOb 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:

ParameterTypBeschreibung
$hideboolOb die Auswahl der Zahlungsmethode ausgeblendet werden soll

Gibt zurück: bool

Capability- und Berechtigungs-Filter

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:

ParameterTypBeschreibung
$canboolOb der Benutzer die Capability hat. Standardwert ist true
$capabilitystringDie 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:

ParameterTypBeschreibung
$limitintDer 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:

ParameterTypBeschreibung
$canboolOb der Tenant die Capability hat

Gibt zurück: bool

Filter für Terminstatus

bkntc_appointment_statuses

Verändert die Liste der verfügbaren Terminstatus. Dieser Hook wird verwendet, wenn du benutzerdefinierte Terminstatus registrieren möchtest.

Parameter:

ParameterTypBeschreibung
$statusesarrayDas 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:

ParameterTypBeschreibung
$namestringDer angezeigte Preisname

Gibt zurück: string

Filter für Einstellungen und Export

bkntc_whitelist_translation_tables

Fügt Datenbanktabellen zur Übersetzungs-Whitelist hinzu, damit Addon-Daten an der Mehrsprachigkeitsfunktion teilnehmen können.

Parameter:

ParameterTypBeschreibung
$tablesarrayDas Array zulässiger Tabellennamen

Gibt zurück: array

bkntc_add_tables_for_export

Fügt benutzerdefinierte Datenbanktabellen zum Backup- und Exportprozess hinzu.

Parameter:

ParameterTypBeschreibung
$tablesarrayDas 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:

ParameterTypBeschreibung
$labelsarrayDas Array der Label-Übersetzungen

Gibt zurück: array

bkntc_save_booking_labels_settings

Verändert Label-Daten, bevor sie gespeichert werden.

Parameter:

ParameterTypBeschreibung
$labelsarrayDie zu speichernden Label-Daten

Gibt zurück: array

Filter für Lokalisierung und Response

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:

ParameterTypBeschreibung
$stringsarrayDas 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:

ParameterTypBeschreibung
$stringsarrayDas 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:

ParameterTypBeschreibung
$responsearrayDas 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:

ParameterTypBeschreibung
$resultmixedDas Ergebnis der Anfrage

Gibt zurück: mixed

Filter für Assets und Addons

bkntc_booking_panel_assets

Verändert die Liste der JavaScript- und CSS-Assets, die im Buchungspanel geladen werden.

Parameter:

ParameterTypBeschreibung
$assetsarrayDas 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:

ParameterTypBeschreibung
$addonsarrayDas 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:

ParameterTypBeschreibung
$contentstringDer Inhalt mit Shortcode-Platzhaltern

Gibt zurück: string

bkntc_short_code_after_replace

Verändert Shortcode-Inhalte, nachdem alle Platzhalter ersetzt wurden.

Parameter:

ParameterTypBeschreibung
$contentstringDer Inhalt mit ersetzten Shortcodes

Gibt zurück: string

UI-Filter

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:

ParameterTypBeschreibung
$htmlstringDer 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

Actions des SaaS-Moduls

Diese Hooks sind verfügbar, wenn das Booknetic-SaaS-Modul aktiv ist. Sie verwenden das Präfix bkntcsaas_.

Initialisierung

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

Tenant-Lebenszyklus

bkntcsaas_tenant_created

Wird ausgelöst, wenn ein neuer Tenant erstellt wird.

Parameter:

ParameterTypBeschreibung
$tenant_idintDie 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:

ParameterTypBeschreibung
$tenant_idintDie ID des gelöschten Tenants

bkntcsaas_tenant_subscribed

Wird ausgelöst, wenn ein Tenant ein Abonnement für einen Plan abschließt.

Parameter:

ParameterTypBeschreibung
$tenant_idintDie ID des Tenants

bkntcsaas_tenant_unsubscribed

Wird ausgelöst, wenn ein Tenant-Abonnement gekündigt wird oder abläuft.

Parameter:

ParameterTypBeschreibung
$tenant_idintDie ID des Tenants

bkntcsaas_tenant_paid

Wird ausgelöst, wenn ein Tenant eine Zahlung leistet.

Parameter:

ParameterTypBeschreibung
$tenant_idintDie ID des Tenants

Tenant-Authentifizierung

bkntcsaas_tenant_sign_up_confirm

Wird ausgelöst, wenn eine Registrierungsbestätigungs-E-Mail an einen Tenant gesendet wird.

Parameter:

ParameterTypBeschreibung
$tenant_idintDie ID des Tenants

bkntcsaas_tenant_sign_up_confirm_resend

Wird ausgelöst, wenn eine Registrierungsbestätigungs-E-Mail erneut gesendet wird.

Parameter:

ParameterTypBeschreibung
$tenant_idintDie 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:

ParameterTypBeschreibung
$tenant_idintDie ID des Tenants

bkntcsaas_tenant_reset_password

Wird ausgelöst, wenn ein Tenant eine Passwort-Zurücksetzung anfordert.

Parameter:

ParameterTypBeschreibung
$tenant_idintDie ID des Tenants

bkntcsaas_tenant_reset_password_completed

Wird ausgelöst, nachdem das Passwort eines Tenants erfolgreich zurückgesetzt wurde.

Parameter:

ParameterTypBeschreibung
$tenant_idintDie ID des Tenants
$passwordstringDas neue Passwort

Abrechnung

bkntcsaas_tenant_deposit_paid

Wird ausgelöst, wenn eine Einzahlung eines Tenants verarbeitet wird.

Parameter:

ParameterTypBeschreibung
$billing_idintDie ID des Abrechnungsdatensatzes

bkntcsaas_tenant_deposit_added

Wird ausgelöst, wenn dem Konto eines Tenants eine Einzahlung hinzugefügt wird.

Parameter:

ParameterTypBeschreibung
$billing_idintDie ID des Abrechnungsdatensatzes

Zusammenfassung

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.

KategorieAnzahl
Core-Actions~50
Core-Filter~55
SaaS-Actions16
Dynamische Hooks (musterbasiert)Mehrere

Schnellreferenz: am häufigsten verwendete Hooks

HookTypHäufiger Anwendungsfall
bkntc_appointment_createdActionBuchungen protokollieren, mit externen Systemen synchronisieren, benutzerdefinierte Formulardaten verarbeiten
bkntc_appointment_after_mutationActionKalendersynchronisierung, Erstellung von Video-Meetings, Protokollierung von Statusänderungen, Bereinigung nach Löschung
bkntc_customer_createdActionCRM-Synchronisierung, Willkommens-E-Mails, Zuweisung von Benutzerrollen
bkntc_payment_confirmedActionRechnungserstellung, Versand von Belegen, Buchhaltungssynchronisierung
bkntc_addons_loadFilterEin benutzerdefiniertes Addon registrieren
bkntc_appointment_insert_dataFilterTermindaten vor dem Speichern verändern
bkntc_busy_slotsFilterBelegte Zeiten aus externen Kalendern einspeisen
bkntc_calendar_eventsFilterExterne Ereignisse zum Admin-Kalender hinzufügen
bkntc_appointment_statusesFilterBenutzerdefinierte Terminstatus hinzufügen
bkntc_booking_panel_assetsFilterBenutzerdefiniertes JavaScript und CSS im Buchungspanel laden
bkntc_localizationFilterÜbersetzbare Strings für das Admin-JavaScript hinzufügen
bkntc_user_capability_filterFilterBenutzerdefinierte Berechtigungslogik umsetzen
bkntc_enqueue_assetsActionSkripte auf bestimmten Admin-Seiten laden