Riassunto AI
Descrizione
Il filtro wpforms_process_filter viene attivato dopo la convalida di tutti i campi e la formattazione dei dati.
Parametri
- $fields
- (array) Valori/proprietà dei campi dell'invio sanificati.
- $entry
- (array) Globale $_POST originale.
- $form_data
- (array) Impostazioni/dati del modulo elaborati, preparati per l'uso successivo.
Origine
wpforms/includes/class-process.php
Maggiori Informazioni
Il filtro viene attivato alla fine, una volta convalidati i campi e formattati i dati.
Esempi
Ricorda di cambiare l'ID del modulo da 817 all'ID del modulo che stai prendendo di mira.
Questo esempio verificherà se c'è un campo Valutazioni in questo particolare modulo e, se l'utente non completa questo campo, imposterà la valutazione predefinita su 0.
/**
* Fires after all field validation and formatting data.
*
* @link https://wpforms.com/developers/wpforms_process_filter/
*
* @param array $fields Sanitized entry field values/properties.
* @param array $entry Original $_POST global.
* @param array $form_data Form data and settings.
*
* @return array
*/
function wpf_dev_process_filter( $fields, $entry, $form_data ) {
$form_id = 817; // Change form ID
// Bail early if form ID does not match
if ( $form_data[ 'id' ] != $form_id ) {
return $fields;
}
foreach ( $fields as $field ) {
// If field type is rating and it is empty, assign a value of 0
if ( $field[ 'type' ] == 'rating' && empty( $field[ 'value' ] ) ) {
$fields[$field[ 'id' ]][ 'value' ] = 0;
}
}
return $fields;
}
add_filter( 'wpforms_process_filter', 'wpf_dev_process_filter', 10, 3 );
Un altro esempio potrebbe essere quando il tutorial Mostra Valori è stato implementato per salvare il valore anziché l'etichetta.
/**
* Save choices `values` instead of `labels` for the fields with `Show values` option enabled.
*
* @link https://wpforms.com/developers/wpforms_process_filter/
*
* @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_filter_choices_values( $fields, $entry, $form_data ) {
if ( ! is_array( $fields ) ) {
return $fields;
}
foreach ( $fields as $field_id => $field ) {
if (
isset( $field[ 'type' ] ) &&
in_array( $field[ 'type' ], [ 'checkbox', 'radio', 'select' ], true ) &&
! empty( $form_data[ 'fields' ][ $field_id ][ 'show_values' ] )
) {
$value_raw = ! empty( $field[ 'value_raw' ] ) ? $field[ 'value_raw' ] : '';
$field[ 'value_raw' ] = $field[ 'value' ];
$field[ 'value' ] = $value_raw;
$fields[ $field_id ] = $field;
}
}
return $fields;
};
add_filter( 'wpforms_process_filter', 'wpf_dev_process_filter_choices_values', 10, 3 );