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 campi orari in un modulo

Introduzione

Sei interessato a confrontare due campi Orario all'interno del tuo modulo e a registrare la differenza calcolata nella tua voce? Non cercare oltre! Questo tutorial è fatto apposta per te. Ti guideremo attraverso il processo di configurazione del tuo modulo e ti forniremo lo snippet PHP necessario per implementare senza problemi questa funzionalità sul tuo sito.

Creazione del modulo

Per iniziare, creiamo un nuovo modulo e configuriamo i nostri campi. In questa guida, progetteremo un modulo specificamente per la prenotazione di sale per feste. Il nostro snippet utilizzerà un Campo Nascosto per calcolare e aggiungere automaticamente le ore totali prenotate alla voce. Questa funzionalità è particolarmente utile per il team di contabilità, fornendo una panoramica chiara per la fatturazione.

Se non hai familiarità con la creazione di moduli, puoi fare riferimento a questa documentazione per assistenza.

Nella configurazione del nostro modulo, includeremo campi standard come Nome, Email, Indirizzo e Telefono. Inoltre, incorporeremo un campo Menu a tendina per la selezione della sala, un campo Data per la data della prenotazione, due campi Orario per specificare l'ora di inizio e fine della prenotazione e, infine, un Campo Nascosto conclusivo per memorizzare le ore totali calcolate utilizzando il nostro snippet.

inizia creando il tuo modulo e aggiungendo i tuoi campi

Aggiunta dello snippet

Successivamente, aggiungeremo lo snippet al nostro sito. Se non sei sicuro di dove o come aggiungere snippet, dai un'occhiata a questo tutorial.

/**
 * Compare two time fields in a form
 * 
 * @link https://wpforms.com/developers/how-to-compare-two-time-fields-in-a-form/
 */

function wpf_wpforms_update_total_field( $fields, $entry, $form_data ) {

	// Only run on my form with ID = 731
	if( 731 != $form_data[ 'id' ] ){
        return $fields;
    }
	
    // Field ID 37 is the first time field of the form
    $start_time = strtotime( $fields[37][ 'value' ] );
    
    // Field ID 38 is the second time field of the form
    $finishing_time = strtotime( $fields[38][ 'value'] );
	
    // Field ID 41 is the hidden field that will calculate the difference
    // between the two time fields and store the hours inside a hidden field of the entry
	$fields[41][ 'value' ] = round(abs($finishing_time  - $start_time)/ 3600,2) . __( ' Hours', 'text-domain');

	return $fields;
}

add_filter( 'wpforms_process_filter', 'wpf_wpforms_update_total_field', 10, 3 );

Questo snippet verrà eseguito solo per l'ID del modulo 731. Esaminerà i due campi Orario del modulo, che sono gli ID 37 e 38. Utilizzando la funzione round, calcolerà la differenza tra i due orari e memorizzerà la differenza all'interno del Campo Nascosto.

Dovrai aggiornare lo snippet per corrispondere agli ID del modulo e dei campi presenti nel tuo modulo. Se hai bisogno di aiuto per trovare questi ID, dai un'occhiata a questo tutorial.

con questo snippet puoi ora due campi orari in un modulo

Vorresti anche confrontare due date? Dai un'occhiata al nostro tutorial su Come confrontare due date nello stesso modulo.

Riferimento azione: wpforms_process