HDWebmobile Reservas y Citas
Vende servicios y citas reservables a través de WooCommerce, con una capacidad por franja horaria que nunca puede sobrevenderse.
Descripción
HDWebmobile Reservas y Citas convierte cualquier producto simple de WooCommerce en un servicio reservable. Los clientes eligen una fecha y franja horaria disponible en la página del producto; la reserva se confirma en el momento en que se completa su pedido, y pueden verla o cancelarla más tarde en Mi Cuenta.
Por qué existe este plugin
Un plugin de reservas competidor (Amelia) tenía una vulnerabilidad IDOR/asignación masiva autenticada (CVE-2026-2931, CVSS 8.8): su endpoint de "actualizar mi perfil de reserva" aceptaba un campo proporcionado por el cliente que vinculaba el registro de reserva a un ID de usuario de WordPress, sin verificar que siguiera apuntando a la cuenta del propio solicitante — lo que permitía a un cliente con privilegios bajos restablecer la contraseña de cualquier usuario de WordPress, incluido un administrador. Este plugin cierra esa clase de vulnerabilidad por diseño:
- El propietario de una reserva se escribe en un único lugar — al completarse el pedido, a partir del ID de cliente del propio pedido — y nunca más. No existe ninguna ruta de código de "actualizar reserva" en este plugin que acepte un ID de cliente, ID de usuario o cualquier campo similar proveniente de una solicitud.
- Este plugin nunca toca una contraseña de WordPress. No existe ninguna ruta de código aquí que llame a
wp_set_password() o algo similar, en absoluto — la contraseña de un cliente permanece enteramente en la pantalla de Detalles de Cuenta del propio núcleo de WordPress.
- Un cliente solo puede ver o cancelar sus propias reservas, delimitadas por su cuenta iniciada en la propia consulta de base de datos — nunca por un ID tomado de la solicitud.
- La capacidad por franja horaria se aplica con una reclamación atómica y segura frente a condiciones de carrera (una restricción de unicidad en la base de datos), de modo que dos clientes nunca pueden ser confirmados en la misma franja más allá de su capacidad configurada. Cancelar una reserva libera correctamente su franja para reutilizarla, mientras que la fila cancelada se conserva para el historial de auditoría.
Características
- Convierte cualquier producto simple en un servicio reservable desde su propia pestaña Datos del Producto > Reserva
- Días disponibles, franjas horarias, tiempo de antelación y cuántos días hacia adelante ofrecer, todo configurable
- Capacidad por franja horaria — una franja deja de ofrecerse una vez que está llena
- La reserva se confirma automáticamente cuando el pedido se marca como Completado
- Una pestaña "Reservas" en Mi Cuenta para ver y cancelar reservas próximas
- Si una franja se llena entre añadir al carrito y el pago, el pedido se completa igualmente con normalidad y se envía un correo al administrador para ayudar a reprogramar — ninguna reserva se duplica jamás
Limitaciones (v1)
- Solo productos simples — sin soporte para productos variables
- Sin asignación de personal/recursos — la capacidad de una franja es un único número compartido, no por miembro del personal
- Sin sincronización de calendario (Google Calendar, iCal, etc.)
Instalación
- Sube el plugin a
/wp-content/plugins/hdwebmobile-booking-appointments, o instálalo a través de la pantalla de plugins de WordPress.
- Activa el plugin. WooCommerce debe estar ya instalado y activo.
- Edita un producto simple, abre su nueva pestaña "Reserva" en Datos del Producto y configura la disponibilidad.
Licencia
GPLv2 o posterior. Consulta LICENSE.