<html lang="es-es" dir="ltr"><head></head><body>### [Cómo proporcionar una restricción de edad en el campo de formulario del selector de fecha](https://wpforms.com/developers/how-to-provide-an-age-restriction-on-the-datepicker-form-field/)

**Publicado:** 23 de octubre de 2020
**Autor:** Umair Majeed

**Extracto:** Este tutorial te mostrará cómo usar PHP o JavaScript para detener el envío del formulario si el campo de fecha no cumple con un rango de fechas específico, como la fecha de nacimiento. 

**Contenido:**

¿Te gustaría añadir restricciones de edad al selector de fecha de tu formulario? Esta guía te mostrará cómo validar edades y mostrar mensajes personalizados cuando las fechas no cumplan tus requisitos. Demostraremos esto usando un formulario de registro para una clase de ballet infantil que solo acepta niños de entre 12 y 18 años.

## Configuración de tu formulario

En el primer paso, simplemente crea un nuevo formulario y añade un campo de formulario de **Fecha / Hora** a tu formulario.

![Añadir campo de formulario de Fecha/Hora a tu formulario.](https://wpforms.com/wp-content/uploads/2020/10/wpforms-add-date-field.jpg)## Añadir validación de restricción de edad

Para validar edades y mostrar mensajes de error debajo del campo del formulario, añade este código a tu sitio. Si no estás seguro de cómo añadir fragmentos de código, consulta nuestra guía sobre cómo añadir fragmentos de código.

```

/**
 * Muestra un mensaje de error al enviar el formulario si la fecha no cae dentro de las pautas.
 *
 * @link  https://wpforms.com/developers/how-to-provide-an-age-restriction-on-the-datepicker-form-field/ *
 */
 
function wpf_dev_process( $fields, $entry, $form_data ) {
  
    // Opcional, puedes limitar a formularios específicos. Abajo, restringimos la salida a
    // el formulario #1000.
    if ( absint( $form_data[ 'id' ] ) !== 1000 ) {
        return $fields;
    }
      
    if ( isset( $fields[25][ 'value' ] ) &amp;&amp; !empty( $fields[25][ 'value' ] ) ) {
        $timestamp = strtotime( $fields[25][ 'value' ] );
        if ($timestamp === false) {
            // Formato de fecha inválido
            wpforms()-&gt;process-&gt;errors[ $form_data[ 'id' ] ][ '25' ] = esc_html__( 'Formato de fecha inválido', 'plugin-domain' );
        } else {
            $birth_year = date('Y', $timestamp);
            $current_year = date('Y');
            $age = $current_year - $birth_year;
             
            if ($age &lt; 12 || $age &gt; 18) {
                // Muestra un mensaje de error en la parte superior del formulario y debajo del campo específico
                wpforms()-&gt;process-&gt;errors[ $form_data[ 'id' ] ][ '25' ] = esc_html__( 'El requisito de edad mínima es 12 y el requisito de edad máxima es 18', 'plugin-domain' );
            }
        }
    } else {
        // El campo de fecha es obligatorio
        wpforms()-&gt;process-&gt;errors[ $form_data[ 'id' ] ][ '25' ] = esc_html__( 'El campo de fecha es obligatorio', 'plugin-domain' );
    }
     
    return $fields;
}
add_action( 'wpforms_process', 'wpf_dev_process', 10, 3 );
```

Asegúrate de actualizar el **ID del formulario (1000)** y el **ID del campo (25)** para que coincidan con tu propio formulario. Si necesitas ayuda para encontrar estos IDs, consulta nuestra [guía sobre cómo encontrar los IDs de formularios y campos](https://wpforms.com/developers/how-to-locate-form-id-and-field-id/).

Con este fragmento de código, si las fechas no cumplen la restricción de edad, se mostrará un mensaje debajo del campo al hacer clic en el botón **Enviar**.

![Con este código alternativo, el mensaje de restricción de edad se mostrará una vez que se haya hecho clic en el botón Enviar.](https://wpforms.com/wp-content/uploads/2020/10/wpforms-error-message-age-restriction.jpg)## Uso de la restricción de edad con campos repetidores

Si tu campo de fecha está dentro de un campo Repetidor, usa esta versión modificada:

```

/**
 * Validación de restricción de edad para campos repetidores
 */
function wpf_dev_process( $fields, $entry, $form_data ) {
    if ( absint( $form_data[ 'id' ] ) !== 1000 ) {
        return $fields;
    }

    foreach ( $fields as $field_id =&gt; $field ) {
        if ( preg_match( '/^25(_\d+)?$/', $field_id ) ) {
            if ( isset( $field[ 'value' ] ) &amp;&amp; !empty( $field[ 'value' ] ) ) {
                $timestamp = strtotime( $field[ 'value' ] );
                if ( $timestamp === false ) {
                    wpforms()-&gt;process-&gt;errors[ $form_data[ 'id' ] ][ $field_id ] = esc_html__( 'Formato de fecha inválido', 'plugin-domain' );
                } else {
                    $birth_year = date('Y', $timestamp);
                    $current_year = date('Y');
                    $age = $current_year - $birth_year;
                    if ( $age &lt; 12 || $age &gt; 18 ) {
                        wpforms()-&gt;process-&gt;errors[ $form_data[ 'id' ] ][ $field_id ] = esc_html__( 'El requisito de edad mínima es 12 y el requisito de edad máxima es 18', 'plugin-domain' );
                    }
                }
            }
        }
    }
    return $fields;
}
add_action( 'wpforms_process', 'wpf_dev_process', 10, 3 );
```

## Uso de la comparación exacta de fechas

Para una verificación de edad más precisa, como asegurar que los usuarios tengan exactamente 18 años o más:

```

/**
 * Comprueba si el usuario tiene 18 años o más utilizando la comparación exacta de fechas
 */
function wpf_dev_compare_dates( $fields, $entry, $form_data ) {
    if ( absint( $form_data[ 'id' ] ) !== 1000 ) {
        return $fields;
    }

    $age = 18;
    $date_1 = $fields[25][ 'unix' ];
    
    if( is_string( $date_1 ) ) {
        $date_1 = strtotime( $date_1 );
    }

    if( time() - $date_1 &lt; $age * 31536000 )
        wpforms()-&gt;process-&gt;errors[ $form_data[ 'id' ] ][ 'header' ] = esc_html__( 'Disculpas, necesitas tener 18 años o más para enviar este formulario.', 'plugin-domain' );
}
add_action( 'wpforms_process', 'wpf_dev_compare_dates', 10, 3 );
```

¡Y eso es todo! Has implementado con éxito la restricción de edad en tu formulario para tu campo de selector de fecha. A continuación, ¿te gustaría personalizar también el campo del selector de fecha de otras maneras? Consulta nuestro tutorial sobre [personalizar las opciones de fecha del campo de fecha y hora](https://wpforms.com/developers/customize-the-date-time-field-date-options/) para más detalles.

## Acciones de referencia

[wpforms\_process](https://wpforms.com/developers/wpforms_process/ "Uso de la acción wpforms_process")

**Categorías:** Campos

**Etiquetas:** JS, PHP

---</body></html>