// Validación de hora según día y servicio
add_filter('wpcf7_validate_text*', 'tg_validar_horario', 20, 2);
add_filter('wpcf7_validate_text', 'tg_validar_horario', 20, 2);
function tg_validar_horario($result, $tag) {
if ($tag->name != 'hora') return $result;
$hora = $_POST['hora'];
$servicio = strtolower($_POST['servicio']);
$fecha = $_POST['fecha'];
// Formato HH:MM
if (!preg_match('/^\d{2}:\d{2}$/', $hora)) {
$result->invalidate($tag, "Introduce la hora en formato HH:MM, por ejemplo 13:30.");
return $result;
}
list($h, $m) = explode(':', $hora);
$min = $h*60 + $m;
$dia_semana = date('N', strtotime($fecha)); // 1=Lunes ... 7=Domingo
// Validación de fecha (no hoy)
$hoy = date('Y-m-d');
if ($fecha == $hoy) {
$result->invalidate($tag, "No se puede reservar para el mismo día.");
return $result;
}
// Lunes y martes: todo permitido
if ($dia_semana==1 || $dia_semana==2) return $result;
// Domingo solo almuerzo
if ($dia_semana==7) {
if ($min < 13*60+30 || $min > 16*60+30) $result->invalidate($tag, "El domingo solo se permite de 13:30 a 16:30.");
if ($servicio=='cena') $result->invalidate($tag, "No hay cenas los domingos.");
return $result;
}
// Miércoles a sábado
if ($dia_semana>=3 && $dia_semana<=6) {
if ($servicio=='almuerzo' && ($min<13*60+30 || $min>16*60+30)) $result->invalidate($tag, "El horario de almuerzo es 13:30 a 16:30.");
if ($servicio=='cena' && ($min<20*60 || $min>23*60+30)) $result->invalidate($tag, "El horario de cena es 20:00 a 23:30.");
}
return $result;
}
Para ofrecer las mejores experiencias, utilizamos tecnologías como las cookies para almacenar y/o acceder a la información del dispositivo. El consentimiento de estas tecnologías nos permitirá procesar datos como el comportamiento de navegación o las identificaciones únicas en este sitio. No consentir o retirar el consentimiento, puede afectar negativamente a ciertas características y funciones.