Descrizione
Azione che si attiva durante l'elaborazione del modulo, dopo che la convalida iniziale del campo è stata superata.
Parametri
- $campi
- array Valori/proprietà del campo di immissione sanificati.
- $ingresso
- array Originale $_POST globale.
- $form_data
- array Impostazioni/dati del modulo.
Fonte
wpforms/includes/class-process.php
Ulteriori informazioni
Il wpforms_process
si attiva verso la fine dell'elaborazione del modulo. Viene eseguita dopo che tutti i campi iniziali del modulo sono stati convalidati e sanificati.
Questo gancio deve essere usato quando l'azione deve potenzialmente restituire un errore e interrompere l'elaborazione del modulo (si vedano gli esempi sotto per i dettagli).
Esempi: verificare l'esistenza di un account utente o convalidare i dati per un gateway di pagamento.
Si tenga presente che l'elaborazione del modulo può ancora essere interrotta/prevenuta dopo l'attivazione di questo hook, da altro codice che utilizza lo stesso hook.
Si veda la nota seguente su un altro hook simile, che si attiva dopo che tutte le convalide sono state superate.
Nota importante: se si sta eseguendo l'elaborazione e non si ha bisogno della convalida o dell'ID della voce, vedere wpforms_process_complete.
Esempi
Nel codice di esempio, si può notare che prima si controlla l'ID del modulo per assicurarsi che corrisponda al modulo che si sta puntando. Poi controlliamo un campo specifico (in base all'ID del campo) per vedere se è vuoto.
Ricordarsi di cambiare l'ID del modulo da 5
in modo che corrisponda all'ID del modulo e modificare il campo '4'
in modo che corrisponda all'ID del 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 indirizzarlo per due moduli diversi?
R: Se si desidera utilizzare questa funzione solo per alcuni moduli ma non per tutti, è sufficiente utilizzare il simbolo in PHP che significa "o".
Per esempio, nello snippet qui sopra, è possibile vedere if ( absint( $form_data[ 'id' ] ) !== 5 )
Questo significa semplicemente che lo snippet verrà eseguito solo sull'ID del modulo. 5. Ma se avessimo diversi moduli da utilizzare?
Esistono un paio di opzioni, di cui diamo conto qui di seguito.
1) Utilizzo di più funzioni
Se si vuole semplicemente duplicare la funzione, assegnarle un nuovo nome e aggiornare il numero ID del modulo. Si copierebbe e incollerebbe l'intera funzione e poi si cambierebbe il nome wpf_dev_process
a qualcosa di unico all'inizio e alla fine della funzione. Questo non è il modo più pulito, perché aggiunge molte righe in più al file delle funzioni, ma è più facile da leggere e comunque efficace.
2) Aggiungere gli ID dei moduli aggiuntivi
Il modo più semplice è quello di utilizzare l'istruzione PHP or
e aggiungere i numeri ID aggiuntivi. Il simbolo PHP per o è ||and modulo ID 7, si dovrebbe if ( absint( $form_data[ 'id' ] ) !== 5 || $form_data[ 'id' ] ) !== 7)
.
Articoli di riferimento
- Come convalidare un campo URL dei social media nel vostro modulo
- Come limitare i numeri in un campo di testo a una riga
- Come fornire una restrizione di età sul campo del modulo Datepicker
- Come confrontare due date nello stesso modulo
- Come aggiungere la convalida del campo del codice postale nei vostri moduli
- Come eseguire confronti tra campi all'interno di WPForms
- Come aggiungere la convalida del campo indirizzo per Authorize.net