Attenzione!

Questo articolo contiene codice PHP ed è destinato agli sviluppatori. Offriamo questo codice come cortesia, ma non forniamo supporto per personalizzazioni del codice o sviluppo di terze parti.

Per ulteriore assistenza, consulta il tutorial di WPBeginner su come aggiungere codice personalizzato.

Chiudi

Come confrontare due date nello stesso modulo

Introduzione

Vuoi confrontare due date all'interno dello stesso modulo? Utilizzando un piccolo snippet PHP puoi facilmente prendere due date e confrontarle all'interno dello stesso modulo. In questo tutorial, ti forniremo uno snippet PHP che prenderà due date picker all'interno dello stesso modulo.

Creazione del modulo

Innanzitutto, dovremo configurare il nostro modulo. Creeremo un modulo e aggiungeremo i nostri campi, inclusi i due campi modulo Data impostati sul formato Data.

crea il tuo modulo e aggiungi i tuoi campi, inclusi i tuoi 2 campi data

Una volta aggiunti questi campi, assicurati di impostarli su Date Picker nella scheda Avanzate.

imposta il campo data per utilizzare il date picker per entrambi i campi

Se hai bisogno di aiuto nella creazione del tuo modulo, esamina questa documentazione.

Aggiungere lo snippet per confrontare due date

Prima di aggiungere lo snippet, dovrai individuare l'ID del modulo e gli ID di entrambi i campi per i campi Data che hai appena aggiunto al tuo modulo.

Se hai bisogno di aiuto per trovare questi numeri ID, consulta questo tutorial.

Quando avrai questi ID, potrai aggiungere il seguente snippet al tuo sito.

/**
 * Compare 2 dates inside the same form.
 *
 * @link  https://wpforms.com/developers/how-to-compare-two-dates-in-the-same-form/
 */

function wpf_dev_compare_dates( $fields, $entry, $form_data ) {
      
    // Optional, you can limit to specific forms. Below, we restrict output to
    // form #731.
    if ( absint( $form_data[ 'id' ] ) !== 731 ) {
        return $fields;
    }
      
	// 3 is the ID of date 1 field
	$date_1 = $fields[3][ 'unix' ]; 
	
	// 4 is the ID of date 2 field
	$date_2 = $fields[4][ 'unix' ]; 
	
	// If date 2 is earlier of the same as time 1
	if ( $date_2 <= $date_1 ) {

		
                // [ 'header' ] will display the error message above the form
                // [ 'footer' ] will display the error message under the form
		wpforms()->process->errors[ $form_data[ 'id' ] ][ 'header' ] = esc_html__( 'The pickup date should not be earlier than the order date.', 'plugin-domain' );
	}
	
}
add_action( 'wpforms_process', 'wpf_dev_compare_dates', 10, 3 );

Se non sei sicuro di dove o come aggiungere snippet personalizzati al tuo sito, dai un'occhiata a questo tutorial.

Il modo in cui funziona lo snippet è che verrà eseguito solo sull'ID del modulo 731, quindi cercherà l'ID del campo Data 3 e l'ID del campo Data 4 e li assegnerà alle variabili $date_1 e $date_2 in modo che possa verificare se $date_2 è minore o uguale a $date_1. In caso affermativo, visualizzerà un errore sopra il secondo campo Data indicando che questa data non può essere precedente all'altra.

il messaggio di errore apparirà sopra quando lo snippet per confrontare due date fallisce

E questo è tutto ciò che ti serve per confrontare due date all'interno dello stesso modulo! Vuoi fornire anche una funzionalità per una restrizione di età al tuo modulo? Dai un'occhiata al nostro tutorial su Come fornire una restrizione di età sul campo modulo Datepicker.

Riferimento azione: wpforms_process