Descrizione

Il wpforms_process_validate_textarea lancia la validazione dell'azione Testo del paragrafo quando il modulo viene inviato.

Parametri

$campo_id
(int) ID del campo.
$campo_submit
(array) Valore originale del campo grezzo/non sanificato inviato per il campo.
$form_data
(array) Impostazioni/dati del modulo elaborati, preparati per essere utilizzati in seguito.

Fonte

wpforms/includes/fields/class-base.php

Ulteriori informazioni

Il wpforms_process_validate_textarea viene applicata ad un array per Testo del paragrafo campo del modulo. Questa funzione può essere utilizzata per tutti i campi del modulo do_action( wpforms_process_validate_{$field_type}, $field_id, $field_submit, $form_data ).

Ad esempio, per utilizzare questo metodo per un file Email si utilizza il campo do_action( wpforms_process_validate_email, $field_id, $field_submit, $form_data ).

È importante notare che i valori dei campi non sono sanificati se non in un secondo momento dell'elaborazione, al punto wpforms_process_format_{$field_type}.il

Esempi

Si può usare questa azione per scansionare il Testo del paragrafo alla ricerca di un elenco di parole che si desidera bloccare dall'invio del modulo, come ad esempio le bestemmie, oppure si può usare questa azione per cercare alcune parole che attiverebbero un'altra azione, come l'impostazione di un valore in un campo nascosto del modulo che si può filtrare dalle voci.

In questo esempio, cercheremo eventuali bestemmie in questo campo. Se c'è una bestemmia, il modulo visualizzerà un errore e non verrà inviato.

/*
 * Check the paragraph text field for profanity.
 *
 * @link https://wpforms.com/developers/wpforms_process_validate_textarea/
 *
 * @param int     $field_id        Field ID.
 * @param array   $field_submit    Unsanitized field value submitted for the field.
 * @param array   $form_data       Form data and settings.
*/

    // Optional, you can limit to specific forms. Below, we restrict output to
    // form ID #1423.
    if ( absint( $form_data[ 'id' ] ) !== 1423 ) {
        return;
    }

function wpf_dev_profanity_filter_paragraph( $field_id, $field_submit, $form_data ) {
    //Create your list of profanity words separated by commas
    $blocked_words = array( 
        'badword1', 
        'badword2'
    );
 
    foreach( $blocked_words as $word ) {
        if(strpos($field_submit, $word) !== FALSE ) {
            wpforms()->process->errors[ $form_data[ 'id' ] ][ $field_id ] = esc_html__( 'No profanity allowed.', 'wpforms' );
            return;
        }
    }
 
}
 
add_action( 'wpforms_process_validate_textarea', 'wpf_dev_profanity_filter_paragraph', 10, 3 );

Riferimenti dell'articolo: