Introduzione
Siete interessati a confrontare due campi temporali all'interno del vostro modulo e a catturare la differenza calcolata nel vostro inserimento? Non cercate oltre! Questo tutorial è fatto su misura per voi. Vi guideremo attraverso il processo di configurazione del vostro modulo e vi forniremo lo snippet PHP necessario per implementare senza problemi questa funzionalità sul vostro sito.
Creazione del modulo
Per iniziare, creiamo un nuovo modulo e configuriamo i nostri campi. In questa guida, progetteremo un modulo specifico per la prenotazione di sale per feste. Il nostro snippet utilizzerà un campo nascosto per calcolare automaticamente e aggiungere alla voce il totale delle ore prenotate. Questa funzione è particolarmente utile per il team di contabilità, in quanto fornisce una panoramica immediata per la fatturazione.
Se non si ha familiarità con la creazione di moduli, si può fare riferimento a questa documentazione per ottenere assistenza.
Nella configurazione del nostro modulo, includeremo campi standard come Nome, Email, Indirizzo e Telefono. Inoltre, incorporeremo un campo a tendina per la selezione della stanza, un campo Data per la data di prenotazione, due campi Ora per specificare l'ora di inizio e di fine della prenotazione e, infine, un campo nascosto conclusivo per memorizzare le ore totali calcolate con il nostro snippet.
Aggiunta dello snippet
Successivamente, aggiungeremo lo snippet al nostro sito. Se non sapete dove o come aggiungere gli snippet, consultate 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 sull'ID del modulo 731. Esaminerà i due Tempo campi del modulo, che sono gli ID 37 e 38. Utilizzando il round
calcolerà la differenza tra i due tempi e la memorizzerà all'interno della cartella Campo nascosto
È necessario aggiornare lo snippet in modo che corrisponda agli ID del modulo e del campo che avete nel vostro modulo. Se si ha bisogno di aiuto per trovare questi ID, consultare questo tutorial.
Volete anche confrontare due date? Date un'occhiata al nostro tutorial su Come confrontare due date nello stesso modulo.
Correlato
Riferimento azione: wpforms_process