Hooks de Back‑end
Aprovecha los eventos de Booknetic Core y SaaS con acciones y filtros al estilo WordPress para personalizar el comportamiento.
Aprovecha los eventos de Booknetic Core y SaaS con acciones y filtros al estilo WordPress para personalizar el comportamiento.
Booknetic incluye un amplio conjunto de acciones y filtros compatibles con WordPress que permiten a los desarrolladores extender, personalizar e integrar el plugin sin modificar los archivos principales. El sistema de hooks sigue el conocido patrón de WordPress do_action() y apply_filters(), por lo que, si ya trabajas con desarrollo de plugins para WordPress, la estructura te resultará natural.
Los hooks del backend son la capa principal de extensión para reaccionar a eventos del ciclo de vida, modificar datos antes de que se guarden o se rendericen, registrar addons, controlar permisos e integrarse con sistemas externos como CRM, calendarios, herramientas de pago e interfaces de administración personalizadas.
Booknetic utiliza dos tipos de hooks:
// Escuchar una acción
add_action('bkntc_appointment_created', function ($appointmentData) {
// Tu lógica personalizada aquí
}, 10, 1);
// Escuchar un filtro
add_filter('bkntc_appointment_insert_data', function ($data) {
$data['notes'] = 'Nota generada automáticamente';
return $data; // Devuelve siempre el valor modificado
}, 10, 1);Los filtros siempre deben devolver un valor. Si olvidas devolver el valor modificado, los datos se perderán y pueden provocar errores.
Todos los hooks de Booknetic siguen un patrón de nombres coherente basado en prefijos:
| Prefijo | Alcance |
|---|---|
bkntc_ | Hooks del plugin principal |
bkntcsaas_ | Hooks del módulo SaaS |
Las acciones se utilizan cuando quieres reaccionar a algo que ha ocurrido dentro de Booknetic.
bkntc_init
Se dispara después de que Booknetic se haya cargado e inicializado por completo. Usa este hook cuando tu código personalizado dependa de que Booknetic esté disponible.
Parámetros: Ninguno
add_action('bkntc_init', function () {
// Booknetic está listo, registra tu lógica personalizada
});bkntc_frontend
Se dispara cuando se carga una página del frontend que contiene el panel de reservas.
Parámetros: Ninguno
add_action('bkntc_frontend', function () {
// Cargar scripts o estilos personalizados del frontend
wp_enqueue_script('my-custom-script', plugins_url('assets/custom.js', __FILE__));
});bkntc_backend
Se dispara cuando se carga el panel de administración de Booknetic.
Parámetros: Ninguno
add_action('bkntc_backend', function () {
// Añadir funcionalidad personalizada al admin
});bkntc_cronjob
Se dispara durante la ejecución del cron job de Booknetic.
Parámetros: Ninguno
bkntc_customer_created
Se dispara cuando se crea un nuevo cliente.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$customer_id | int | El ID del cliente recién creado |
$wp_password | string | La contraseña del usuario de WordPress si se creó un usuario de WordPress |
add_action('bkntc_customer_created', function ($customerId, $wpPassword) {
// Enviar email de bienvenida, sincronizar con CRM, etc.
error_log("Nuevo cliente creado: #$customerId");
}, 10, 2);bkntc_customer_saved
Se dispara después de guardar los datos del cliente, tanto en creación como en actualización.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$customer_id | int | El ID del cliente guardado |
add_action('bkntc_customer_saved', function ($customerId) {
// Sincronizar los datos actualizados del cliente con un sistema externo
}, 10, 1);bkntc_customer_before_edit
Se dispara antes de que se actualice un registro de cliente. Esto es útil cuando necesitas capturar el estado anterior antes de aplicar los cambios.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$customer_id | int | El ID del cliente que se está editando |
bkntc_customer_deleted
Se dispara cuando se elimina un cliente.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$customer_id | int | El ID del cliente eliminado |
add_action('bkntc_customer_deleted', function ($customerId) {
// Limpiar datos relacionados en sistemas externos
}, 10, 1);bkntc_customer_sign_up_confirm
Se dispara cuando un cliente confirma el registro mediante verificación por correo electrónico.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$token | string | El token de confirmación |
$customer_id | int | El ID del cliente confirmado |
bkntc_customer_forgot_password
Se dispara cuando un cliente solicita un restablecimiento de contraseña.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$token | string | El token de restablecimiento de contraseña |
$customer_id | int | El ID del cliente |
bkntc_customer_reset_password
Se dispara después de que la contraseña de un cliente se haya restablecido correctamente.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$customer_id | int | El ID del cliente |
bkntc_appointment_created
Se dispara cuando se crea una nueva cita, ya sea desde el panel de reservas del frontend o desde el backend administrativo.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$appointment_data | AppointmentRequestData | El objeto de datos de solicitud de cita que contiene todos los detalles de la cita |
AppointmentRequestData (BookneticApp\Backend\Appointments\Helpers\AppointmentRequestData) proporciona acceso a:
| Propiedad | Tipo | Descripción |
|---|---|---|
->appointmentId | int | El ID de la cita creada |
->serviceId | int | El ID del servicio seleccionado |
->staffId | int | El ID del personal asignado |
->locationId | int | El ID de la ubicación seleccionada |
->customerId | int | El ID del cliente |
->date | string | La fecha de la cita en formato Y-m-d |
->startTime | string | La hora de inicio en formato H:i |
->endTime | string | La hora de fin en formato H:i |
->paymentMethod | string | La clave del método de pago |
->serviceInf | Service|Collection | El objeto completo del modelo de servicio |
->staffInf | Staff|Collection | El objeto completo del modelo de personal |
->locationInf | Location|Collection | El objeto completo del modelo de ubicación |
->appointmentInf | Appointment|Collection | El objeto completo del modelo de cita |
add_action('bkntc_appointment_created', function (AppointmentRequestData $appointmentData) {
$appointmentId = $appointmentData->appointmentId;
$serviceId = $appointmentData->serviceId;
$customerId = $appointmentData->customerId;
$serviceName = $appointmentData->serviceInf->name;
// Enviar notificación, sincronizar con calendario externo, etc.
}, 10, 1);bkntc_backend_appointment_created
Se dispara específicamente cuando una cita se crea desde el panel de administración, no desde el panel de reservas del frontend.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$appointment_data | AppointmentRequestData | El objeto de datos de solicitud de cita |
bkntc_appointment_before_edit
Se dispara antes de que se actualice una cita existente. Usa esto cuando necesites inspeccionar o capturar el estado actual antes de aplicar cambios.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$appointment_obj | AppointmentRequestData | El objeto de datos de solicitud de cita antes de la modificación |
add_action('bkntc_appointment_before_edit', function (AppointmentRequestData $appointmentObj) {
// Guardar el estado anterior para comparación
$oldStatus = $appointmentObj->appointmentInf->status;
$oldStaffId = $appointmentObj->staffId;
}, 10, 1);bkntc_appointment_after_edit
Se dispara después de que una cita haya sido actualizada.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$appointment_obj | AppointmentRequestData | El objeto actualizado de datos de solicitud de cita |
bkntc_appointment_before_mutation
Se dispara antes de que una cita sufra cualquier cambio. Esto incluye cambios de estado, ediciones, reprogramaciones, confirmación de pago y eliminación. Este es un hook general de “antes del cambio”.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$appointment_id | int|null | El ID de la cita. Puede ser null cuando se llama durante la creación de una nueva cita en el flujo de confirmación de pago |
Este hook se dispara en estos contextos:
bkntc_appointment_deletedadd_action('bkntc_appointment_before_mutation', function ($appointmentId) {
if ($appointmentId === null) return;
// Capturar el estado actual antes de que cambie
$appointment = \BookneticApp\Models\Appointment::get($appointmentId);
// Guardar el estado anterior, sincronizar con sistemas externos, etc.
}, 10, 1);bkntc_appointment_after_mutation
Se dispara después de que una cita haya sufrido un cambio. Al igual que bkntc_appointment_before_mutation, este hook se dispara para cambios de estado, ediciones, reprogramaciones, confirmación de pago y eliminación. Este es uno de los hooks más utilizados en Booknetic. Los addons de sincronización de calendario, reuniones de vídeo y registro de cambios suelen depender de él.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$appointment_id | int|null | El ID de la cita. Será null cuando la cita haya sido eliminada |
Cuando este hook se dispara durante una eliminación, $appointment_id es null porque el registro está a punto de ser eliminado. Si necesitas el ID real de la cita antes de la eliminación, usa bkntc_appointment_before_mutation. Si necesitas lógica específica de eliminación, usa bkntc_appointment_deleted.
add_action('bkntc_appointment_after_mutation', function ($appointmentId) {
if ($appointmentId === null) {
// La cita fue eliminada — manejar limpieza
return;
}
// Sincronizar con Google Calendar, crear reunión de Zoom, registrar cambios, etc.
$appointment = \BookneticApp\Models\Appointment::get($appointmentId);
}, 10, 1);bkntc_appointment_deleted
Se dispara cuando una cita es eliminada. Este hook se ejecuta después de que bkntc_appointment_before_mutation y bkntc_appointment_after_mutation ya hayan sido llamados para esa eliminación.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$appointment_id | int | El ID de la cita eliminada |
add_action('bkntc_appointment_deleted', function ($appointmentId) {
// Limpiar datos relacionados en sistemas externos
// Nota: el registro de la cita puede que ya haya sido eliminado de la base de datos en este punto
}, 10, 1);bkntc_validate_appointment_reschedule
Se dispara durante la fase de validación de una reprogramación de cita.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$appointment_arr | array | Los datos de reprogramación de la cita |
Estos hooks se ejecutan durante el flujo de reservas mientras los datos de solicitud de cita se cargan, procesan y validan.
bkntc_appointment_request_data_load
Se dispara cuando se cargan los datos de solicitud de cita para una sola solicitud de reserva.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$appointment_obj | AppointmentRequestData | El objeto de datos de solicitud de cita |
bkntc_appointment_requests_load
Se dispara después de que se hayan cargado todas las solicitudes de cita, por ejemplo cuando un carrito contiene múltiples reservas.
Parámetros: Ninguno
bkntc_appointment_requests_validate
Se dispara durante la validación de la colección completa de solicitudes de cita.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$appointment_requests | AppointmentRequests | La instancia BookneticApp\Backend\Appointments\Helpers\AppointmentRequests que contiene todas las solicitudes de reserva |
bkntc_after_appointment_requests_validate
Se dispara después de completar la validación de las solicitudes de cita.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$appointment_requests | AppointmentRequests | La instancia BookneticApp\Backend\Appointments\Helpers\AppointmentRequests |
bkntc_appointment_request_before_data_validate
Se dispara antes de validar una entrada individual de datos de solicitud de cita.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$appointment_request_data | AppointmentRequestData | La instancia BookneticApp\Backend\Appointments\Helpers\AppointmentRequestData |
bkntc_appointment_request_data_validate
Se dispara durante la validación de una entrada individual de datos de solicitud de cita.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$appointment_request_data | AppointmentRequestData | La instancia BookneticApp\Backend\Appointments\Helpers\AppointmentRequestData |
bkntc_handle_any_staff_on_step
Se dispara cuando se selecciona “Cualquier personal” durante el flujo de reservas, permitiéndote personalizar el comportamiento de asignación del personal.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$steps_arr | array | El array de pasos de reserva |
bkntc_booking_step_confirmation_validation
Se dispara durante la validación del paso de confirmación en el panel de reservas.
Parámetros: Ninguno
bkntc_payment_confirmed
Se dispara cuando se confirma un pago para una cita.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$appointment_id | int | El ID de la cita |
$method | string | Método de pago opcional, como 'payment_link' |
add_action('bkntc_payment_confirmed', function ($appointmentId, $method = null) {
// Generar factura, enviar recibo, etc.
}, 10, 2);bkntc_payment_completed
Se dispara cuando un flujo de pago se completa por completo, incluida la confirmación del gateway.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$status | string | El estado del pago |
$custom_data | mixed | Datos personalizados pasados a través del flujo de pago |
$method | string | El identificador del método de pago |
bkntc_payment_confirmed_backend
Se dispara cuando se confirma un pago desde el panel de administración.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$appointment_id | int | El ID de la cita |
bkntc_payment_canceled
Se dispara cuando un pago es cancelado.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$appointment_id | int | El ID de la cita |
bkntc_staff_created
Se dispara cuando se crea un nuevo miembro del personal.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$staff_id | int | El ID del miembro del personal recién creado |
add_action('bkntc_staff_created', function ($staffId) {
// Asignar un rol de usuario de WordPress, enviar email de bienvenida, etc.
}, 10, 1);bkntc_after_request_staff_save_staff
Se dispara después de que un miembro del personal haya sido guardado a través del panel de administración.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$staff_arr | array | El array con los datos guardados del personal |
bkntc_service_model_scopes
Se dispara cuando se están aplicando scopes de consulta del modelo de servicio.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$class_name | string | El nombre de la clase del modelo |
bkntc_service_defaults_serviceInf
Se dispara cuando se está cargando la información predeterminada del servicio.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$service_obj | Service|Collection | El objeto del modelo BookneticApp\Models\Service |
bkntc_enqueue_assets
Se dispara cuando se están encolando los assets del panel de administración de Booknetic. Usa esto para cargar scripts y estilos de addons solo en las páginas del admin donde sean necesarios.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$module | string | El nombre del módulo actual, como 'appointments' o 'calendar' |
$action | string | La acción actual |
$view_path | string | La ruta del archivo de vista |
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
Se dispara cuando se carga la vista del módulo de calendario.
Parámetros: Ninguno
Estos hooks te permiten inyectar HTML personalizado y fragmentos de interfaz en partes específicas del panel de reservas.
bkntc_after_booking_panel_shortcode
Se dispara después de la salida del shortcode del panel de reservas.
Parámetros: Ninguno
bkntc_after_information_inputs
Se dispara después de los campos estándar en el paso Información del panel de reservas. Esto se usa habitualmente para añadir campos de entrada personalizados.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$service_obj | Service|Collection | El objeto del modelo BookneticApp\Models\Service seleccionado |
add_action('bkntc_after_information_inputs', function ($serviceObj) {
echo '<div class="form-group">';
echo '<label>Solicitud especial</label>';
echo '<textarea name="special_request" class="form-control"></textarea>';
echo '</div>';
}, 10, 1);bkntc_service_step_footer
Se dispara en la parte inferior del paso Servicios.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$services_arr | array | La lista de servicios disponibles |
bkntc_service_extras_step_footer
Se dispara en la parte inferior del paso Extras del servicio.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$extras_arr | array | La lista de extras del servicio |
bkntc_tabitem_{tabSlug}_{slug}_{section}
Este es un patrón de hook dinámico para inyectar contenido en elementos de pestañas del panel de administración.
El nombre del hook se construye a partir de:
{tabSlug} — el identificador del grupo de pestañas, como appointments{slug} — el slug específico de la pestaña, como edit_details{section} — la sección dentro de la pestaña, como duration_afterParámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$tab_item | AbstractTabItemUI | La instancia BookneticApp\Providers\UI\Abstracts\AbstractTabItemUI |
$func_args | array | Argumentos adicionales |
Ejemplo:
add_action('bkntc_tabitem_appointments_edit_details_duration_after', function ($tabItem, $args) {
echo '<div class="my-custom-section">Contenido personalizado aquí</div>';
}, 10, 2);Los filtros se utilizan cuando necesitas cambiar datos antes de que Booknetic los guarde, los renderice, los devuelva o los pase a otra capa.
bkntc_appointment_insert_data
Modifica los datos de la cita antes de que se inserten en la base de datos.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$data | array | Los datos de la cita que se van a insertar |
Devuelve: array — El array de datos modificado
add_filter('bkntc_appointment_insert_data', function ($data) {
// Añadir una nota personalizada a cada nueva cita
$data['note'] = 'Creada mediante integración personalizada';
return $data;
}, 10, 1);bkntc_appointment_update_data
Modifica los datos de la cita antes de que se actualicen en la base de datos.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$data | array | Los datos de la cita que se van a actualizar |
Devuelve: array
bkntc_appointment_reschedule
Modifica los datos de la cita durante una operación de reprogramación.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$data | array | Los datos de reprogramación |
Devuelve: array
bkntc_appointment_data_service_extras
Modifica los datos de extras del servicio para una cita.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$extras | array | El array de extras del servicio |
Devuelve: array
bkntc_selected_time_slot_info
Modifica la información de la franja horaria seleccionada durante el flujo de reservas.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$slot_info | object | El objeto de información de la franja horaria |
Devuelve: object
bkntc_set_service_duration_frontend
Sobrescribe la duración del servicio mostrada en el panel de reservas del frontend.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$service_obj | Service|Collection | El objeto del modelo BookneticApp\Models\Service con información de duración |
Devuelve: Service\|Collection
bkntc_query_builder_global_scope
Controla si debe aplicarse el scope global de consulta, como el filtrado por tenant o el filtrado basado en personal.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$apply_scope | bool | Si se debe aplicar el scope global. El valor predeterminado es true |
Devuelve: bool
add_filter('bkntc_query_builder_global_scope', function ($applyScope) {
// Omitir el scope global para operaciones específicas
return false;
}, 10, 1);bkntc_booking_panel_render_staff_info
Modifica la información del personal mostrada en el paso de selección de personal del panel de reservas.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$staff_info | array | El array de datos del personal |
Devuelve: array
add_filter('bkntc_booking_panel_render_staff_info', function ($staffInfo) {
// Añadir una insignia personalizada o modificar los datos de visualización
foreach ($staffInfo as &$staff) {
$staff['name'] .= ' (Disponible)';
}
return $staffInfo;
}, 10, 1);bkntc_booking_panel_render_services_info
Modifica la información del servicio mostrada en el paso de selección de servicio del panel de reservas.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$services_info | array | El array de datos de los servicios |
Devuelve: array
bkntc_booking_panel_render_service_extras_info
Modifica la información de los extras del servicio mostrada en el panel de reservas.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$extras_info | array | El array de datos de los extras del servicio |
Devuelve: array
bkntc_booking_panel_information_step_parameters
Modifica los parámetros pasados a la vista del paso Información.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$params | array | El array de parámetros de la vista |
Devuelve: array
bkntc_extras_step_components
Modifica los componentes renderizados en el paso Extras.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$components | array | Los componentes del paso Extras |
Devuelve: array
bkntc_busy_slots
Modifica la lista de franjas horarias ocupadas o no disponibles. Los addons de sincronización de calendario suelen usar esto para inyectar eventos de calendarios externos en la disponibilidad de Booknetic.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$busy_slots | array | El array de franjas horarias ocupadas |
$calendar_service | CalendarService | La instancia BookneticApp\Backend\Appointments\Helpers\CalendarService |
Devuelve: array
add_filter('bkntc_busy_slots', function ($busySlots, CalendarService $calendarService) {
// Añadir eventos de calendario externo como franjas ocupadas
$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
Controla si las franjas horarias completamente reservadas deben seguir siendo visibles en el panel de reservas.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$show | bool | Si se deben mostrar las franjas ocupadas. El valor predeterminado depende de la configuración |
Devuelve: bool
bkntc_calendar_service_disable_slot
Controla si una franja horaria específica debe deshabilitarse y no poder seleccionarse en el panel de reservas.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$disable | bool | Si se debe deshabilitar la franja |
Devuelve: bool
bkntc_calendar_events
Modifica los eventos mostrados en el calendario del admin. Los addons de sincronización de calendario usan esto para mostrar eventos externos junto a las citas nativas de Booknetic.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$events | array | El array de eventos del calendario |
$start_time | string | La hora de inicio de la vista del calendario |
$end_time | string | La hora de fin de la vista del calendario |
$staff_filter | mixed | El filtro de personal activo |
Devuelve: array
add_filter('bkntc_calendar_events', function ($events, $startTime, $endTime, $staffFilter) {
// Añadir eventos desde una fuente externa
$events[] = [
'id' => 'external_1',
'title' => 'Evento externo',
'start' => '2025-01-15T09:00:00',
'end' => '2025-01-15T10:00:00',
'color' => '#ff9800',
];
return $events;
}, 10, 4);bkntc_filter_calendar_event_object
Modifica un único objeto de evento de calendario antes de que se renderice.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$event | array | Los datos del evento del calendario |
Devuelve: array
bkntc_post_step_verification
Añade lógica de verificación personalizada después de que se envíe un paso de reserva. Devuelve false para bloquear el avance del paso.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$verified | bool | Si el paso ha superado la verificación |
Devuelve: bool
bkntc_pre_step_verification
Añade lógica de verificación personalizada antes de que se cargue un paso de reserva.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$verified | bool | Si el paso debe continuar |
Devuelve: bool
bkntc_hide_method_selecting
Controla si la selección del método de pago debe ocultarse en el panel de reservas.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$hide | bool | Si se debe ocultar la selección del método de pago |
Devuelve: bool
bkntc_user_capability_filter
Sobrescribe las comprobaciones de capacidades del usuario. Esto lo usan addons como User Role Manager para implementar lógica de permisos personalizada.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$can | bool | Si el usuario tiene la capacidad. El valor predeterminado es true |
$capability | string | La capacidad que se está comprobando |
Devuelve: bool
add_filter('bkntc_user_capability_filter', function ($can, $capability) {
// Restringir una capacidad específica para usuarios no administradores
if ($capability === 'appointments_delete' && !current_user_can('administrator')) {
return false;
}
return $can;
}, 10, 2);bkntc_capability_limit_filter
Sobrescribe límites de capacidades como el número máximo de citas o miembros del personal.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$limit | int | El valor actual del límite |
Devuelve: int
bkntc_tenant_capability_filter
Sobrescribe las comprobaciones de capacidades a nivel tenant. En modo SaaS, esto se utiliza para controlar el acceso a funciones según las capacidades del plan.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$can | bool | Si el tenant tiene la capacidad |
Devuelve: bool
bkntc_appointment_statuses
Modifica la lista de estados de cita disponibles. Este hook se utiliza cuando quieres registrar estados personalizados de cita.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$statuses | array | El array de definiciones de estados |
Devuelve: array
Cada elemento de estado debe seguir esta estructura:
add_filter('bkntc_appointment_statuses', function ($statuses) {
$statuses[] = [
'slug' => 'in_progress',
'title' => 'En progreso',
'color' => '#2196F3',
'icon' => 'fa fa-spinner',
'busy' => true,
];
return $statuses;
}, 10, 1);bkntc_price_name
Modifica cómo se muestra una etiqueta de precio.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$name | string | El nombre mostrado del precio |
Devuelve: string
bkntc_whitelist_translation_tables
Añade tablas de base de datos a la lista blanca de traducción para que los datos del addon puedan participar en la funcionalidad multilingüe.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$tables | array | El array de nombres de tablas permitidas |
Devuelve: array
bkntc_add_tables_for_export
Añade tablas de base de datos personalizadas al proceso de copia de seguridad y exportación.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$tables | array | El array de nombres de tablas a exportar |
Devuelve: array
add_filter('bkntc_add_tables_for_export', function ($tables) {
$tables[] = 'my_addon_table';
return $tables;
}, 10, 1);bkntc_labels_settings_translates
Modifica la configuración traducible de etiquetas de reserva.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$labels | array | El array de traducciones de etiquetas |
Devuelve: array
bkntc_save_booking_labels_settings
Modifica los datos de las etiquetas antes de guardarlos.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$labels | array | Los datos de etiquetas que se van a guardar |
Devuelve: array
bkntc_localization
Añade o modifica cadenas de localización pasadas al JavaScript del panel de administración. Usa este hook para exponer las cadenas de tu addon a la interfaz del frontend.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$strings | array | El array clave-valor de localización |
Devuelve: array
add_filter('bkntc_localization', function ($strings) {
$strings['my_addon_label'] = __('Mi etiqueta personalizada', 'my-addon');
$strings['my_addon_confirm'] = __('¿Estás seguro?', 'my-addon');
return $strings;
}, 10, 1);bkntc_frontend_localization
Funciona igual que bkntc_localization, pero para el JavaScript del panel de reservas del frontend.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$strings | array | El array clave-valor de localización |
Devuelve: array
bkntc_response
Modifica los datos de respuesta AJAX antes de que se devuelvan al cliente.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$response | array | El array de datos de respuesta |
Devuelve: array
bkntc_after_frontend_request_{method}
Un filtro dinámico que se dispara después de procesar una solicitud AJAX del frontend. {method} se reemplaza por el nombre real del método AJAX.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$result | mixed | El resultado de la solicitud |
Devuelve: mixed
bkntc_booking_panel_assets
Modifica la lista de assets JavaScript y CSS cargados en el panel de reservas.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$assets | array | El array de definiciones de assets |
Devuelve: 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
Registra tu addon en Booknetic. Este es el hook de integración principal utilizado por cada cargador de addons.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$addons | array | El array de nombres de clase de addons registrados |
Devuelve: array
add_filter('bkntc_addons_load', function ($addons) {
$addons[] = \BookneticAddon\MyAddon\MyAddonLoader::class;
return $addons;
}, 10, 1);bkntc_short_code_before_replace
Modifica el contenido del shortcode antes de que los marcadores de posición del shortcode se reemplacen por valores reales.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$content | string | El contenido que contiene marcadores de shortcode |
Devuelve: string
bkntc_short_code_after_replace
Modifica el contenido del shortcode después de que todos los marcadores hayan sido reemplazados.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$content | string | El contenido con los shortcodes reemplazados |
Devuelve: string
bkntc_datatable_after_render
Añade contenido personalizado después de que se renderice una DataTable en el panel de administración. Esto es útil para columnas personalizadas, filas de resumen o fragmentos extra de interfaz.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$html | string | El contenido HTML después de la datatable |
Devuelve: string
bkntc_tabitem_{tabSlug}_{slug}_{section}_before
Inyecta HTML antes de una sección específica dentro de un elemento de pestaña.
Devuelve: string
bkntc_tabitem_{tabSlug}_{slug}_{section}_end
Inyecta HTML al final de una sección específica dentro de un elemento de pestaña.
Devuelve: string
Estos hooks están disponibles cuando el módulo Booknetic SaaS está activo. Utilizan el prefijo bkntcsaas_.
bkntcsaas_init
Se dispara después de que el módulo SaaS se haya inicializado por completo.
Parámetros: Ninguno
bkntcsaas_frontend
Se dispara cuando se carga el frontend de SaaS, como las páginas de registro e inicio de sesión.
Parámetros: Ninguno
bkntcsaas_backend
Se dispara cuando se carga el panel de administración SaaS.
Parámetros: Ninguno
bkntcsaas_tenant_created
Se dispara cuando se crea un nuevo tenant.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$tenant_id | int | El ID del tenant recién creado |
add_action('bkntcsaas_tenant_created', function ($tenantId) {
// Configurar datos predeterminados para el nuevo tenant
// Enviar correo de onboarding, etc.
}, 10, 1);bkntcsaas_tenant_deleted
Se dispara cuando se elimina un tenant.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$tenant_id | int | El ID del tenant eliminado |
bkntcsaas_tenant_subscribed
Se dispara cuando un tenant se suscribe a un plan.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$tenant_id | int | El ID del tenant |
bkntcsaas_tenant_unsubscribed
Se dispara cuando la suscripción de un tenant se cancela o expira.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$tenant_id | int | El ID del tenant |
bkntcsaas_tenant_paid
Se dispara cuando un tenant realiza un pago.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$tenant_id | int | El ID del tenant |
bkntcsaas_tenant_sign_up_confirm
Se dispara cuando se envía un correo de confirmación de registro a un tenant.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$tenant_id | int | El ID del tenant |
bkntcsaas_tenant_sign_up_confirm_resend
Se dispara cuando se reenvía un correo de confirmación de registro.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$tenant_id | int | El ID del tenant |
bkntcsaas_tenant_sign_up_completed
Se dispara cuando un tenant completa el registro, lo que significa que el correo está verificado y la cuenta está activa.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$tenant_id | int | El ID del tenant |
bkntcsaas_tenant_reset_password
Se dispara cuando un tenant solicita un restablecimiento de contraseña.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$tenant_id | int | El ID del tenant |
bkntcsaas_tenant_reset_password_completed
Se dispara después de que la contraseña de un tenant se haya restablecido correctamente.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$tenant_id | int | El ID del tenant |
$password | string | La nueva contraseña |
bkntcsaas_tenant_deposit_paid
Se dispara cuando se procesa el pago de un depósito de un tenant.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$billing_id | int | El ID del registro de facturación |
bkntcsaas_tenant_deposit_added
Se dispara cuando se añade un depósito a la cuenta de un tenant.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
$billing_id | int | El ID del registro de facturación |
Los hooks del backend de Booknetic proporcionan una capa de extensión completa para eventos del ciclo de vida principal, procesamiento del flujo de reservas, integración de calendarios, permisos, assets, inyección de interfaz, carga de addons y flujos de tenants en SaaS.
| Categoría | Cantidad |
|---|---|
| Acciones principales | ~50 |
| Filtros principales | ~55 |
| Acciones SaaS | 16 |
| Hooks dinámicos (basados en patrón) | Múltiples |
| Hook | Tipo | Caso de uso común |
|---|---|---|
bkntc_appointment_created | Acción | Registrar reservas, sincronizar con sistemas externos, procesar datos de formularios personalizados |
bkntc_appointment_after_mutation | Acción | Sincronización de calendario, creación de reuniones de vídeo, registro de cambios de estado, limpieza tras eliminación |
bkntc_customer_created | Acción | Sincronización con CRM, correos de bienvenida, asignación de roles de usuario |
bkntc_payment_confirmed | Acción | Generación de facturas, envío de recibos, sincronización contable |
bkntc_addons_load | Filtro | Registrar un addon personalizado |
bkntc_appointment_insert_data | Filtro | Modificar datos de la cita antes de guardar |
bkntc_busy_slots | Filtro | Inyectar tiempos ocupados desde calendarios externos |
bkntc_calendar_events | Filtro | Añadir eventos externos al calendario del admin |
bkntc_appointment_statuses | Filtro | Añadir estados personalizados de cita |
bkntc_booking_panel_assets | Filtro | Cargar JavaScript y CSS personalizados en el panel de reservas |
bkntc_localization | Filtro | Añadir cadenas traducibles para el JavaScript del admin |
bkntc_user_capability_filter | Filtro | Implementar lógica personalizada de permisos |
bkntc_enqueue_assets | Acción | Cargar scripts en páginas específicas del panel de administración |