Beschreibung

Die Aktion wpforms_process_validate_payment-checkbox wird für jedes Kontrollkästchen-Artikel-Zahlungsfeld ausgelöst, während WPForms ein übermitteltes Formular validiert, bevor der Feldwert formatiert und der Eintrag gespeichert wird.

Diese Aktion ist seit WPForms 1.4.0 verfügbar.

Parametertypbeschreibung
$field_idstring|intFeld-ID als numerischer String.
$field_submitmixedÜbermittelter Feldwert (Rohdaten). Für dieses Feld ist es das Array der ausgewählten Choice-IDs aus der Anfrage oder ein leerer String, wenn nichts für das Feld gesendet wurde.
$form_dataArrayFormulardaten und Einstellungen.

Weitere Informationen

WPForms_Process::process() durchläuft jedes Feld in $form_data['fields'] und ruft do_action( "wpforms_process_validate_{$field_type}", $field_id, $field_submit, $this->form_data ) für jedes auf. Dieser Hook ist die Instanz für den Feldtyp payment-checkbox. Er wird bei jeder Übermittlung eines Formulars ausgelöst, das das Feld enthält, unabhängig davon, ob der Besucher es ausgefüllt hat oder nicht. Die Datei befindet sich in includes/, daher wird sie in Lite und Pro ausgelöst.

Dieser Hook ist eine Instanz von do_action( "wpforms_process_validate_{$field_type}", $field_id, $field_submit, $form_data ). Andere Instanzen sind wpforms_process_validate_payment-single für das Feld Einzelartikel und wpforms_process_validate_checkbox für das Standardfeld Kontrollkästchen.

Die Feldklasse registriert ihre eigene validate()-Methode für diesen Hook mit Priorität 10 und drei Argumenten. Dieser Callback fügt den Fehler für erforderliche Felder hinzu, lehnt Choice-IDs ab, die nicht in den Feldeinstellungen vorhanden sind, und erzwingt das Choice-Limit des Feldes. Ein später hinzugefügter Callback mit der gleichen Priorität läuft danach und überschreibt denselben Fehler-Slot.

Um die Übermittlung abzulehnen, schreiben Sie eine Nachricht in wpforms()->obj( 'process' )->errors[ $form_data['id'] ][ $field_id ]. Nach der Schleife wird der Filter wpforms_process_initial_errors auf die gesammelten Fehler angewendet; bedingte Logik verwendet ihn, um Fehler von ausgeblendeten Feldern zu entfernen. Werte werden zu diesem Zeitpunkt nicht bereinigt. Die Bereinigung erfolgt später in wpforms_process_format_{$field_type}.

Quelle

wpforms/includes/class-process.php

Beispiel

Erfordert zwischen zwei und fünf ausgewählte Elemente in einem Kontrollkästchen-Artikel-Feld eines Formulars und stoppt die Übermittlung mit einem Fehler unter dem Feld, wenn die Anzahl außerhalb dieses Bereichs liegt.

/**
 * Require between two and five checked items in a Checkbox Items field.
 *
 * @link https://wpforms.com/developers/wpforms_process_validate_payment-checkbox/
 *
 * @param string|int $field_id     Field ID.
 * @param mixed      $field_submit Submitted field value (raw data).
 * @param array      $form_data    Form data and settings.
 */
function wpf_dev_process_validate_payment_checkbox( $field_id, $field_submit, $form_data ) {

    // Only run on my form with ID = 143, remember to change this to match your form ID.
    if ( absint( $form_data['id'] ) !== 143 ) {
        return;
    }

    // Only run on the Checkbox Items field with ID = 21, remember to change this to match your field ID.
    if ( absint( $field_id ) !== 21 ) {
        return;
    }

    $min   = 2;
    $max   = 5;
    $count = is_array( $field_submit ) ? count( $field_submit ) : 0;

    if ( $count < $min ) {
        wpforms()->obj( 'process' )->errors[ $form_data['id'] ][ $field_id ] = sprintf(
            /* translators: %d - minimum number of choices. */
            esc_html__( 'Please select a minimum of %d choices.', 'wpforms' ),
            $min
        );

        return;
    }

    if ( $count > $max ) {
        wpforms()->obj( 'process' )->errors[ $form_data['id'] ][ $field_id ] = sprintf(
            /* translators: %d - maximum number of choices. */
            esc_html__( 'Please select a maximum of %d choices.', 'wpforms' ),
            $max
        );
    }
}
add_action( 'wpforms_process_validate_payment-checkbox', 'wpf_dev_process_validate_payment_checkbox', 10, 3 );

Referenzartikel