Attenzione!

Questo articolo contiene codice PHP ed è destinato agli sviluppatori. Offriamo questo codice come cortesia, ma non forniamo supporto per personalizzazioni del codice o sviluppo di terze parti.

Per ulteriore assistenza, consulta il tutorial di WPBeginner su come aggiungere codice personalizzato.

Chiudi

Descrizione

Azione che si attiva durante l'elaborazione dell'invio del modulo, dopo che la convalida iniziale dei campi è stata superata.

Parametri

$fields
array Valori/proprietà dei campi di invio sanificati.
$entry
array Globale $_POST originale.
$form_data
array Impostazioni/dati del modulo.

Origine

wpforms/includes/class-process.php

Maggiori Informazioni

L'azione wpforms_process si attiva verso la fine dell'elaborazione dell'invio del modulo. Viene eseguita dopo che tutti i campi iniziali del modulo sono stati convalidati e sanificati.

Questo hook dovrebbe essere utilizzato quando l'azione potrebbe dover restituire un errore e interrompere l'elaborazione del modulo (vedere gli Esempi di seguito per i dettagli).

Esempi: verificare se un account utente esiste o convalidare i dati per un gateway di pagamento.

Ricorda che l'elaborazione del modulo può ancora essere interrotta/impedita dopo l'attivazione di questo hook, da altro codice che utilizza lo stesso hook.

Vedere la nota di seguito su un altro hook simile che si attiva dopo che tutta la convalida è stata superata.

Nota importante: Se stai eseguendo l'elaborazione e non hai bisogno della convalida o dell'ID dell'invio, vedi wpforms_process_complete.

Esempi

Nell'esempio di codice, vedrai che stiamo prima controllando l'ID del modulo per assicurarci che corrisponda al modulo di destinazione. Poi stiamo controllando un campo specifico (per ID del campo) per vedere se è vuoto.

Ricorda solo di cambiare l'ID del modulo da 5 per corrispondere al tuo ID modulo e cambiare '4' per corrispondere al tuo ID campo.

/**
 * 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

D: Come posso indirizzare questo per due moduli diversi?

R: Se vuoi usare questa funzione solo per alcuni moduli ma non per tutti, devi solo usare il simbolo in PHP che significa "o".

Ad esempio, nello snippet sopra, puoi vedere if ( absint( $form_data[ 'id' ] ) !== 5 ), questo significa semplicemente che eseguiremo quello snippet solo sull'ID del modulo 5. Ma cosa succede se avessimo alcuni moduli diversi su cui volevamo eseguirlo?

Ci sono un paio di opzioni, diamo un'occhiata a ciascuna opzione di seguito.

1) Utilizzo di funzioni multiple

Se volessi semplicemente duplicare la funzione, dai alla funzione un nuovo nome e aggiorna il numero dell'ID del modulo. Copieresti e incolleresti l'intera funzione e poi cambieresti questo nome wpf_dev_process in qualcosa di univoco all'inizio e alla fine della funzione. Questo non è il modo più pulito poiché aggiungerà molte righe extra al tuo file di funzioni, ma è più facile da leggere ed è comunque efficace.

2) Aggiunta degli ID modulo aggiuntivi

Il modo più semplice è usare l'istruzione PHP or e aggiungere i numeri ID aggiuntivi. Il simbolo PHP per o è ||e ID modulo 7, faresti if ( absint( $form_data[ 'id' ] ) !== 5 || $form_data[ 'id' ] ) !== 7).

Articoli di riferimento