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