Code Snippets

// Validación de hora según día y servicio (Actualizado 2026)
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

    // 1. 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;
    }

    // 2. Lunes y Martes: CERRADO
    if ($dia_semana == 1 || $dia_semana == 2) {
        $result->invalidate($tag, "Lunes y martes estamos cerrados por descanso.");
        return $result;
    }

    // 3. Miércoles, Jueves y Domingos: Solo Almuerzo (13:30 a 16:30)
    if ($dia_semana == 3 || $dia_semana == 4 || $dia_semana == 7) {
        if ($servicio == 'cena') {
            $result->invalidate($tag, "No hay servicio de cena este día.");
        } elseif ($min < (13*60+30) || $min > (16*60+30)) {
            $result->invalidate($tag, "El horario de almuerzo es de 13:30 a 16:30.");
        }
    }

    // 4. Viernes y Sábados: Almuerzo y Cena
    if ($dia_semana == 5 || $dia_semana == 6) {
        if ($servicio == 'almuerzo') {
            if ($min < (13*60+30) || $min > (16*60+30)) {
                $result->invalidate($tag, "El horario de almuerzo es de 13:30 a 16:30.");
            }
        } elseif ($servicio == 'cena') {
            if ($min < (20*60) || $min > (23*00)) { // Ajustado a las 23:00 según tu petición
                $result->invalidate($tag, "El horario de cena los viernes y sábados es de 20:00 a 23:00.");
            }
        }
    }

    return $result;
}
noviembre 17, 2025

validación formulario

// Validación de hora según día y servicio (Actualizado 2026) 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') […]
Ir al contenido