v5 ya live

HASTA

60% DTO
Oferta Caliente de Diciembre
Launch Sale
0 DÍAS
:
0 HORAS
:
0 MINUTOS
:
0 SEGUNDOS
OBTENER AHORA percent icon

Hooks de Back‑end

Aprovecha los eventos de Booknetic Core y SaaS con acciones y filtros al estilo WordPress para personalizar el comportamiento.

Versión:
Categorías

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.

Cómo funcionan los hooks

Booknetic utiliza dos tipos de hooks:

  • Acciones te permiten ejecutar lógica personalizada cuando ocurre un evento específico, como cuando se crea una cita, se confirma un pago o se elimina un cliente.
  • Filtros te permiten modificar un valor antes de que Booknetic lo use o lo devuelva, como los datos de inserción de una cita, los datos de eventos del calendario, los assets del panel de reservas o las comprobaciones de capacidades.

Registrar un listener de hook

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

Convención de nombres de hooks

Todos los hooks de Booknetic siguen un patrón de nombres coherente basado en prefijos:

PrefijoAlcance
bkntc_Hooks del plugin principal
bkntcsaas_Hooks del módulo SaaS

Acciones

Las acciones se utilizan cuando quieres reaccionar a algo que ha ocurrido dentro de Booknetic.

Inicialización y arranque

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

Acciones de clientes

bkntc_customer_created

Se dispara cuando se crea un nuevo cliente.

Parámetros:

ParámetroTipoDescripción
$customer_idintEl ID del cliente recién creado
$wp_passwordstringLa 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ámetroTipoDescripción
$customer_idintEl 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ámetroTipoDescripción
$customer_idintEl ID del cliente que se está editando

bkntc_customer_deleted

Se dispara cuando se elimina un cliente.

Parámetros:

ParámetroTipoDescripción
$customer_idintEl 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ámetroTipoDescripción
$tokenstringEl token de confirmación
$customer_idintEl ID del cliente confirmado

bkntc_customer_forgot_password

Se dispara cuando un cliente solicita un restablecimiento de contraseña.

Parámetros:

ParámetroTipoDescripción
$tokenstringEl token de restablecimiento de contraseña
$customer_idintEl 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ámetroTipoDescripción
$customer_idintEl ID del cliente

Acciones de citas

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ámetroTipoDescripción
$appointment_dataAppointmentRequestDataEl objeto de datos de solicitud de cita que contiene todos los detalles de la cita

AppointmentRequestData (BookneticApp\Backend\Appointments\Helpers\AppointmentRequestData) proporciona acceso a:

PropiedadTipoDescripción
->appointmentIdintEl ID de la cita creada
->serviceIdintEl ID del servicio seleccionado
->staffIdintEl ID del personal asignado
->locationIdintEl ID de la ubicación seleccionada
->customerIdintEl ID del cliente
->datestringLa fecha de la cita en formato Y-m-d
->startTimestringLa hora de inicio en formato H:i
->endTimestringLa hora de fin en formato H:i
->paymentMethodstringLa clave del método de pago
->serviceInfService|CollectionEl objeto completo del modelo de servicio
->staffInfStaff|CollectionEl objeto completo del modelo de personal
->locationInfLocation|CollectionEl objeto completo del modelo de ubicación
->appointmentInfAppointment|CollectionEl 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ámetroTipoDescripción
$appointment_dataAppointmentRequestDataEl 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ámetroTipoDescripción
$appointment_objAppointmentRequestDataEl 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ámetroTipoDescripción
$appointment_objAppointmentRequestDataEl 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ámetroTipoDescripción
$appointment_idint|nullEl 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:

  • Cambios de estado como aprobar, cancelar, rechazar y transiciones similares
  • Ediciones de cita como cambios de fecha, hora, personal o servicio
  • Reprogramación de citas
  • Confirmación de pago cuando el estado se actualiza tras el pago
  • Eliminación de cita, antes de bkntc_appointment_deleted
add_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ámetroTipoDescripción
$appointment_idint|nullEl 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ámetroTipoDescripción
$appointment_idintEl 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ámetroTipoDescripción
$appointment_arrarrayLos datos de reprogramación de la cita

Acciones de solicitud de 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ámetroTipoDescripción
$appointment_objAppointmentRequestDataEl 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ámetroTipoDescripción
$appointment_requestsAppointmentRequestsLa 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ámetroTipoDescripción
$appointment_requestsAppointmentRequestsLa 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ámetroTipoDescripción
$appointment_request_dataAppointmentRequestDataLa 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ámetroTipoDescripción
$appointment_request_dataAppointmentRequestDataLa 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ámetroTipoDescripción
$steps_arrarrayEl 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

Acciones de pago

bkntc_payment_confirmed

Se dispara cuando se confirma un pago para una cita.

Parámetros:

ParámetroTipoDescripción
$appointment_idintEl ID de la cita
$methodstringMé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ámetroTipoDescripción
$statusstringEl estado del pago
$custom_datamixedDatos personalizados pasados a través del flujo de pago
$methodstringEl 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ámetroTipoDescripción
$appointment_idintEl ID de la cita

bkntc_payment_canceled

Se dispara cuando un pago es cancelado.

Parámetros:

ParámetroTipoDescripción
$appointment_idintEl ID de la cita

Acciones de personal

bkntc_staff_created

Se dispara cuando se crea un nuevo miembro del personal.

Parámetros:

ParámetroTipoDescripción
$staff_idintEl 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ámetroTipoDescripción
$staff_arrarrayEl array con los datos guardados del personal

Acciones de servicio e interfaz

bkntc_service_model_scopes

Se dispara cuando se están aplicando scopes de consulta del modelo de servicio.

Parámetros:

ParámetroTipoDescripción
$class_namestringEl 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ámetroTipoDescripción
$service_objService|CollectionEl 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ámetroTipoDescripción
$modulestringEl nombre del módulo actual, como 'appointments' o 'calendar'
$actionstringLa acción actual
$view_pathstringLa 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

Acciones de vista del panel de reservas

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ámetroTipoDescripción
$service_objService|CollectionEl 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ámetroTipoDescripción
$services_arrarrayLa lista de servicios disponibles

bkntc_service_extras_step_footer

Se dispara en la parte inferior del paso Extras del servicio.

Parámetros:

ParámetroTipoDescripción
$extras_arrarrayLa lista de extras del servicio

Acciones dinámicas de elementos de pestaña

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_after

Parámetros:

ParámetroTipoDescripción
$tab_itemAbstractTabItemUILa instancia BookneticApp\Providers\UI\Abstracts\AbstractTabItemUI
$func_argsarrayArgumentos 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);

Filtros

Los filtros se utilizan cuando necesitas cambiar datos antes de que Booknetic los guarde, los renderice, los devuelva o los pase a otra capa.

Filtros de consulta y datos

bkntc_appointment_insert_data

Modifica los datos de la cita antes de que se inserten en la base de datos.

Parámetros:

ParámetroTipoDescripción
$dataarrayLos 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ámetroTipoDescripción
$dataarrayLos 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ámetroTipoDescripción
$dataarrayLos datos de reprogramación

Devuelve: array

bkntc_appointment_data_service_extras

Modifica los datos de extras del servicio para una cita.

Parámetros:

ParámetroTipoDescripción
$extrasarrayEl 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ámetroTipoDescripción
$slot_infoobjectEl 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ámetroTipoDescripción
$service_objService|CollectionEl 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ámetroTipoDescripción
$apply_scopeboolSi 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);

Filtros de renderizado del panel de reservas

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ámetroTipoDescripción
$staff_infoarrayEl 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ámetroTipoDescripción
$services_infoarrayEl 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ámetroTipoDescripción
$extras_infoarrayEl 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ámetroTipoDescripción
$paramsarrayEl array de parámetros de la vista

Devuelve: array

bkntc_extras_step_components

Modifica los componentes renderizados en el paso Extras.

Parámetros:

ParámetroTipoDescripción
$componentsarrayLos componentes del paso Extras

Devuelve: array

Filtros de calendario y franjas horarias

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ámetroTipoDescripción
$busy_slotsarrayEl array de franjas horarias ocupadas
$calendar_serviceCalendarServiceLa 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ámetroTipoDescripción
$showboolSi 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ámetroTipoDescripción
$disableboolSi 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ámetroTipoDescripción
$eventsarrayEl array de eventos del calendario
$start_timestringLa hora de inicio de la vista del calendario
$end_timestringLa hora de fin de la vista del calendario
$staff_filtermixedEl 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ámetroTipoDescripción
$eventarrayLos datos del evento del calendario

Devuelve: array

Filtros de verificación de pasos

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ámetroTipoDescripción
$verifiedboolSi 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ámetroTipoDescripción
$verifiedboolSi 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ámetroTipoDescripción
$hideboolSi se debe ocultar la selección del método de pago

Devuelve: bool

Filtros de capacidades y permisos

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ámetroTipoDescripción
$canboolSi el usuario tiene la capacidad. El valor predeterminado es true
$capabilitystringLa 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ámetroTipoDescripción
$limitintEl 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ámetroTipoDescripción
$canboolSi el tenant tiene la capacidad

Devuelve: bool

Filtros de estado de citas

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ámetroTipoDescripción
$statusesarrayEl 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ámetroTipoDescripción
$namestringEl nombre mostrado del precio

Devuelve: string

Filtros de configuración y exportación

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ámetroTipoDescripción
$tablesarrayEl 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ámetroTipoDescripción
$tablesarrayEl 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ámetroTipoDescripción
$labelsarrayEl array de traducciones de etiquetas

Devuelve: array

bkntc_save_booking_labels_settings

Modifica los datos de las etiquetas antes de guardarlos.

Parámetros:

ParámetroTipoDescripción
$labelsarrayLos datos de etiquetas que se van a guardar

Devuelve: array

Filtros de localización y respuesta

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ámetroTipoDescripción
$stringsarrayEl 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ámetroTipoDescripción
$stringsarrayEl 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ámetroTipoDescripción
$responsearrayEl 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ámetroTipoDescripción
$resultmixedEl resultado de la solicitud

Devuelve: mixed

Filtros de assets y addons

bkntc_booking_panel_assets

Modifica la lista de assets JavaScript y CSS cargados en el panel de reservas.

Parámetros:

ParámetroTipoDescripción
$assetsarrayEl 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ámetroTipoDescripción
$addonsarrayEl 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ámetroTipoDescripción
$contentstringEl 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ámetroTipoDescripción
$contentstringEl contenido con los shortcodes reemplazados

Devuelve: string

Filtros de interfaz

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ámetroTipoDescripción
$htmlstringEl 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

Acciones del módulo SaaS

Estos hooks están disponibles cuando el módulo Booknetic SaaS está activo. Utilizan el prefijo bkntcsaas_.

Inicialización

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

Ciclo de vida del tenant

bkntcsaas_tenant_created

Se dispara cuando se crea un nuevo tenant.

Parámetros:

ParámetroTipoDescripción
$tenant_idintEl 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ámetroTipoDescripción
$tenant_idintEl ID del tenant eliminado

bkntcsaas_tenant_subscribed

Se dispara cuando un tenant se suscribe a un plan.

Parámetros:

ParámetroTipoDescripción
$tenant_idintEl ID del tenant

bkntcsaas_tenant_unsubscribed

Se dispara cuando la suscripción de un tenant se cancela o expira.

Parámetros:

ParámetroTipoDescripción
$tenant_idintEl ID del tenant

bkntcsaas_tenant_paid

Se dispara cuando un tenant realiza un pago.

Parámetros:

ParámetroTipoDescripción
$tenant_idintEl ID del tenant

Autenticación 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ámetroTipoDescripción
$tenant_idintEl 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ámetroTipoDescripción
$tenant_idintEl 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ámetroTipoDescripción
$tenant_idintEl ID del tenant

bkntcsaas_tenant_reset_password

Se dispara cuando un tenant solicita un restablecimiento de contraseña.

Parámetros:

ParámetroTipoDescripción
$tenant_idintEl 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ámetroTipoDescripción
$tenant_idintEl ID del tenant
$passwordstringLa nueva contraseña

Facturación

bkntcsaas_tenant_deposit_paid

Se dispara cuando se procesa el pago de un depósito de un tenant.

Parámetros:

ParámetroTipoDescripción
$billing_idintEl 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ámetroTipoDescripción
$billing_idintEl ID del registro de facturación

Resumen

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íaCantidad
Acciones principales~50
Filtros principales~55
Acciones SaaS16
Hooks dinámicos (basados en patrón)Múltiples

Referencia rápida: hooks más utilizados

HookTipoCaso de uso común
bkntc_appointment_createdAcciónRegistrar reservas, sincronizar con sistemas externos, procesar datos de formularios personalizados
bkntc_appointment_after_mutationAcciónSincronización de calendario, creación de reuniones de vídeo, registro de cambios de estado, limpieza tras eliminación
bkntc_customer_createdAcciónSincronización con CRM, correos de bienvenida, asignación de roles de usuario
bkntc_payment_confirmedAcciónGeneración de facturas, envío de recibos, sincronización contable
bkntc_addons_loadFiltroRegistrar un addon personalizado
bkntc_appointment_insert_dataFiltroModificar datos de la cita antes de guardar
bkntc_busy_slotsFiltroInyectar tiempos ocupados desde calendarios externos
bkntc_calendar_eventsFiltroAñadir eventos externos al calendario del admin
bkntc_appointment_statusesFiltroAñadir estados personalizados de cita
bkntc_booking_panel_assetsFiltroCargar JavaScript y CSS personalizados en el panel de reservas
bkntc_localizationFiltroAñadir cadenas traducibles para el JavaScript del admin
bkntc_user_capability_filterFiltroImplementar lógica personalizada de permisos
bkntc_enqueue_assetsAcciónCargar scripts en páginas específicas del panel de administración