Einführung
Sind Sie daran interessiert, zwei Zeitfelder in Ihrem Formular zu vergleichen und die berechnete Differenz in Ihrem Eintrag zu erfassen? Dann suchen Sie nicht weiter! Dieses Tutorial ist wie für Sie gemacht. Wir führen Sie durch den Prozess der Konfiguration Ihres Formulars und stellen Ihnen das notwendige PHP-Snippet zur Verfügung, um diese Funktionalität nahtlos in Ihre Website zu implementieren.
Erstellen des Formulars
Lassen Sie uns zunächst ein neues Formular erstellen und die Felder konfigurieren. In diesem Leitfaden werden wir ein Formular speziell für die Reservierung von Partyräumen entwerfen. Unser Snippet verwendet ein verborgenes Feld, um die Gesamtzahl der reservierten Stunden automatisch zu berechnen und an den Eintrag anzuhängen. Diese Funktion ist besonders für das Buchhaltungsteam nützlich, da sie einen einfachen Überblick für die Rechnungsstellung bietet.
Wenn Sie mit der Erstellung von Formularen nicht vertraut sind, können Sie diese Dokumentation zu Rate ziehen.
In unserem Formular werden wir Standardfelder wie Name, E-Mail, Adresse und Telefon einfügen. Zusätzlich werden wir ein Dropdown-Feld für die Zimmerauswahl, ein Datumsfeld für das Reservierungsdatum, zwei Zeitfelder für die Angabe der Anfangs- und Endzeiten der Reservierung und schließlich ein abschließendes verborgenes Feld zum Speichern der berechneten Gesamtstundenzahl mithilfe unseres Snippets einfügen.
Hinzufügen des Snippets
Als Nächstes werden wir das Snippet zu unserer Website hinzufügen. Wenn Sie nicht sicher sind, wo oder wie Sie Snippets hinzufügen können, lesen Sie bitte dieses 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 );
Dieses Snippet wird nur mit der Formular-ID ausgeführt 731. Sie wird sich mit den beiden Zeit Felder des Formulars, d.h. die IDs 37 und 38. Die Verwendung des round
berechnet sie die Differenz zwischen den beiden Zeiten und speichert die Differenz in der Datei Verborgenes Feld
Sie müssen das Snippet aktualisieren, damit es mit den Formular- und Feld-IDs übereinstimmt, die Sie in Ihrem Formular haben. Wenn Sie Hilfe benötigen, um diese IDs zu finden, sehen Sie sich bitte dieses Tutorial an.
Möchten Sie auch zwei Daten vergleichen? Werfen Sie einen Blick auf unsere Anleitung zum Vergleich von zwei Daten im selben Formular.
Verwandte Seiten
Referenz der Aktion: wpforms_process