Achtung!

Dieser Artikel enthält PHP-Code und richtet sich an Entwickler. Wir stellen diesen Code als Service zur Verfügung, bieten jedoch keine Unterstützung für Codeanpassungen oder die Entwicklung durch Dritte.

Für zusätzliche Hilfe siehe das Tutorial von WPBeginner zum Hinzufügen von benutzerdefiniertem Code.

Schließen

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