KI-Zusammenfassung
Beschreibung
Aktion, die während der Verarbeitung von Formulareingaben ausgelöst wird, nachdem die anfängliche Feldvalidierung erfolgreich war.
Parameter
- $fields
- array Bereinigte Feldwerte/Eigenschaften des Eintrags.
- $entry
- array Ursprüngliches $_POST-Global.
- $form_data
- array Formulareinstellungen/Daten.
Quelle
wpforms/includes/class-process.php
Weitere Informationen
Die Aktion wpforms_process wird gegen Ende der Formularverarbeitung ausgelöst. Sie läuft, nachdem alle anfänglichen Formularfelder validiert und bereinigt wurden.
Dieser Hook sollte verwendet werden, wenn die Aktion potenziell einen Fehler zurückgeben und die Formularverarbeitung abbrechen muss (siehe Beispiele unten für Details).
Beispiele: Überprüfen, ob ein Benutzerkonto existiert oder Daten für ein Zahlungs-Gateway validieren.
Bitte denken Sie daran, dass die Formularverarbeitung nach dem Auslösen dieses Hooks durch anderen Code, der denselben Hook verwendet, immer noch abgebrochen/verhindert werden kann.
Siehe den Hinweis unten zu einem weiteren ähnlichen Hook, der ausgelöst wird, nachdem alle Validierungen bestanden wurden.
Wichtiger Hinweis: Wenn Sie eine Verarbeitung durchführen und keine Validierung benötigen oder die Eingabe-ID nicht benötigen, siehe wpforms_process_complete.
Beispiele
Im Beispielcode sehen Sie, dass wir zuerst die Formular-ID überprüfen, um sicherzustellen, dass sie mit dem Formular übereinstimmt, das angesprochen wird. Dann überprüfen wir ein bestimmtes Feld (anhand der Feld-ID), um zu sehen, ob es leer ist.
Denken Sie daran, die Formular-ID von 5 zu ändern, um Ihre Formular-ID anzupassen, und die '4' zu ändern, um Ihre Feld-ID anzupassen.
/**
* 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 ansprechen?
A: Wenn Sie diese Funktion nur für einige Formulare, aber nicht für alle verwenden möchten, müssen Sie nur das Symbol in PHP verwenden, das „oder“ bedeutet.
Zum Beispiel sehen Sie im obigen Ausschnitt if ( absint( $form_data[ 'id' ] ) !== 5 ). Dies bedeutet einfach, dass wir diesen Ausschnitt nur für die Formular-ID 5 ausführen werden. Aber was ist, wenn wir ein paar verschiedene Formulare hätten, für die dies ausgeführt werden sollte?
Es gibt ein paar Optionen, lassen Sie uns jede Option unten betrachten.
1) Verwendung mehrerer Funktionen
Wenn Sie die Funktion einfach duplizieren möchten, geben Sie der Funktion einen neuen Namen und aktualisieren Sie die Formular-ID-Nummer. Sie würden die gesamte Funktion kopieren und einfügen und dann diesen Namen wpf_dev_process am Anfang und Ende der Funktion in etwas Einzigartiges ändern. Dies ist nicht die sauberste Methode, da sie viele zusätzliche Zeilen zu Ihrer Funktionen-Datei hinzufügt, aber sie ist leichter zu lesen und immer noch effektiv.
2) Hinzufügen der zusätzlichen Formular-IDs
Der einfachste Weg ist, einfach die PHP-Anweisung or zu verwenden und die zusätzlichen ID-Nummern hinzuzufügen. Das PHP-Symbol für oder ist ||. Wenn Sie also Formular-ID 5 und Formular-ID 7 haben, würden Sie if ( absint( $form_data[ 'id' ] ) !== 5 || $form_data[ 'id' ] ) !== 7) verwenden.
Referenzartikel
- Überprüfen eines Social-Media-URL-Felds in Ihrem Formular
- So beschränken Sie Zahlen in einem einzeiligen Textformularfeld
- Wie man eine Altersbeschränkung für das Datumsfeld eines Formulars festlegt
- Zwei Daten im selben Formular vergleichen
- So fügen Sie die Validierung von Postleitzahlenfeldern zu Ihren Formularen hinzu
- Feldvergleiche innerhalb Ihres WPForms durchführen
- Hinzufügen von Adressfeld-Validierung für Authorize.net