Code Snippets

// 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;
}
noviembre 17, 2025

validación formulario

// 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; […]
Ir al contenido