Beschreibung
Aktion, die während der Verarbeitung der Formulareingabe ausgelöst wird, nachdem die anfängliche Feldüberprüfung abgeschlossen ist.
Parameter
- $Felder
- array Bereinigte Werte/Eigenschaften von Eingabefeldern.
- $Eintrag
- array Original $_POST global.
- $form_data
- Array Formulareinstellungen/Daten.
Quelle
wpforms/includes/class-process.php
Mehr Informationen
Die wpforms_process
Aktion wird gegen Ende der Formulareingabeverarbeitung ausgelöst. Sie wird ausgeführt, nachdem alle anfänglichen Formularfelder validiert und bereinigt worden sind.
Dieser Hook sollte verwendet werden, wenn die Aktion möglicherweise einen Fehler zurückgeben und die Verarbeitung des Formulars unterbrechen muss (siehe Beispiele weiter unten für Details).
Beispiele: Überprüfen, ob ein Benutzerkonto existiert, oder Validieren von Daten für ein Zahlungsgateway.
Bitte denken Sie daran, dass die Verarbeitung des Formulars auch nach dem Auslösen dieses Hooks durch anderen Code, der denselben Hook verwendet, angehalten/verhindert werden kann.
Siehe den Hinweis weiter unten zu einem anderen ähnlichen Hook, der ausgelöst wird, nachdem die Validierung abgeschlossen ist.
Wichtiger Hinweis: Wenn Sie eine Verarbeitung vornehmen und keine Validierung benötigen oder die Eintrags-ID benötigen, siehe wpforms_process_complete.
Beispiele
Im Beispielcode sehen Sie, dass wir zunächst die Formular-ID überprüfen, um sicherzustellen, dass sie mit dem Formular übereinstimmt, das angesprochen werden soll. Dann wird ein bestimmtes Feld (anhand der Feld-ID) daraufhin überprüft, ob es leer ist.
Denken Sie nur daran, die Formular-ID von 5
mit Ihrer Formular-ID überein und ändern Sie die '4'
mit Ihrer Feld-ID übereinstimmen.
/** * Action that fires during form entry processing after initial field validation. * * @link https://wpforms.com/developers/wpforms_process/ * * @param array $fields Sanitized entry field. values/properties. * @param array $entry Original $_POST global. * @param array $form_data Form data and settings. */ function wpf_dev_process( $fields, $entry, $form_data ) { // Optional, you can limit to specific forms. Below, we restrict output to // form #5. if ( absint( $form_data[ 'id' ] ) !== 5 ) { return $fields; } // check the field ID 4 to see if it's empty and if it is, run the error if(empty( $fields[4][ 'value' ]) ) { // Add to global errors. This will stop form entry from being saved to the database. // Uncomment the line below if you need to display the error above the form. // wpforms()->process->errors[ $form_data[ 'id' ] ][ 'header' ] = esc_html__( 'Some error occurred.', 'plugin-domain' ); // Check the field ID 4 and show error message at the top of form and under the specific field wpforms()->process->errors[ $form_data[ 'id' ] ] [ '4' ] = esc_html__( 'Some error occurred.', 'plugin-domain' ); // Add additional logic (what to do if error is not displayed) } } add_action( 'wpforms_process', 'wpf_dev_process', 10, 3 );
FAQ
F: Wie kann ich dies für zwei verschiedene Formulare nutzen?
A: Wenn Sie diese Funktion nur für einige, aber nicht für alle Formulare verwenden wollen, müssen Sie nur das Symbol in PHP verwenden, das "oder" bedeutet.
In dem obigen Ausschnitt sehen Sie zum Beispiel if ( absint( $form_data[ 'id' ] ) !== 5 )
bedeutet dies einfach, dass wir das Snippet nur in der Formular-ID ausführen 5. Aber was wäre, wenn wir mehrere verschiedene Formulare hätten, auf denen wir dies ausführen wollen?
Es gibt mehrere Möglichkeiten, die wir im Folgenden näher erläutern wollen.
1) Verwendung mehrerer Funktionen
Wenn Sie die Funktion nur duplizieren, der Funktion einen neuen Namen geben und die Formular-ID-Nummer aktualisieren wollten, würden Sie die gesamte Funktion kopieren und einfügen. Sie würden die gesamte Funktion kopieren und einfügen und dann diesen Namen ändern wpf_dev_process
zu etwas Eindeutigem am Anfang und Ende der Funktion. Dies ist nicht die sauberste Methode, da sie Ihrer Funktionsdatei viele zusätzliche Zeilen hinzufügt, aber sie ist einfacher zu lesen und trotzdem effektiv.
2) Hinzufügen der zusätzlichen Formular-IDs
Am einfachsten ist es, einfach die PHP-Anweisung zu verwenden or
und fügen Sie die zusätzlichen ID-Nummern ein. Das PHP-Symbol für oder ist ||and Formular ID 7, würden Sie if ( absint( $form_data[ 'id' ] ) !== 5 || $form_data[ 'id' ] ) !== 7)
.
Referenzartikel
- Validierung eines Social Media URL-Feldes in Ihrem Formular
- Zahlen in einem einzeiligen Textformularfeld einschränken
- Wie man eine Altersbeschränkung für das Datepicker-Formularfeld angibt
- Vergleich zweier Daten im selben Formular
- Hinzufügen der Validierung von Postleitzahlenfeldern zu Ihren Formularen
- Wie Sie Feldvergleiche in Ihren WPForms durchführen
- Hinzufügen der Adressfeldüberprüfung für Authorize.net