Resumo da IA
Descrição
Ação que é disparada durante o processamento da entrada do formulário, após a validação inicial do campo ter passado.
Parâmetros
- $campos
- matriz Valores/propriedades do campo de entrada higienizados.
- $entrada
- matriz Original $_POST global.
- $form_data
- matriz Definições/dados do formulário.
Fonte
wpforms/includes/class-process.php
Mais informações
O wpforms_process A ação dispara no final do processamento da entrada do formulário. É executada depois de todos os campos iniciais do formulário terem sido validados e higienizados.
Este gancho deve ser utilizado quando a ação necessita potencialmente de devolver um erro e interromper o processamento do formulário (ver Exemplos abaixo para mais pormenores).
Exemplos: verificar se uma conta de utilizador existe ou validar dados para um gateway de pagamento.
Lembre-se que o processamento do formulário ainda pode ser interrompido/prevenido após o disparo deste hook, por outro código que utilize o mesmo hook.
Veja a nota abaixo sobre outro hook semelhante que dispara depois de toda a validação ter sido aprovada.
Nota importante: Se estiver a processar e não precisar de validação ou precisar do ID de entrada, ver wpforms_process_complete.
Exemplos
No código de exemplo, verá que começamos por verificar o ID do formulário para nos certificarmos de que corresponde ao formulário que está a ser visado. Em seguida, verificamos um campo específico (pelo ID do campo) para ver se está vazio.
Lembre-se apenas de alterar o ID do formulário de 5 para corresponder ao seu ID de formulário e alterar o '4' para corresponder ao seu ID de 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
P: Como posso direcionar isto para dois formulários diferentes?
R: Se pretender utilizar esta função apenas para alguns formulários, mas não para todos, basta utilizar o símbolo em PHP que significa "ou".
Por exemplo, no snippet acima, é possível ver if ( absint( $form_data[ 'id' ] ) !== 5 )isto significa simplesmente que só vamos executar esse snippet no ID do formulário 5. Mas e se tivéssemos alguns formulários diferentes em que quiséssemos que isto funcionasse?
Existem algumas opções. Vejamos cada uma delas em seguida.
1) Utilizar várias funções
Se quiser apenas duplicar a função, dê-lhe um novo nome e actualize o número de ID do formulário. Copiaria e colaria toda a função e, em seguida, alteraria este nome wpf_dev_process para algo único no início e no fim da função. Esta não é a forma mais limpa, pois adicionará muitas linhas extra ao seu ficheiro de funções, mas é mais fácil de ler e continua a ser eficaz.
2) Adicionar os IDs de formulário adicionais
A maneira mais fácil é usar apenas a instrução PHP or e adicionar os números de identificação adicionais. O símbolo PHP para ou é ||and no formulário ID 7, deve if ( absint( $form_data[ 'id' ] ) !== 5 || $form_data[ 'id' ] ) !== 7).
Artigos de referência
- Como validar um campo de URL de redes sociais no seu formulário
- Como restringir números num campo de formulário de texto de uma linha
- Como fornecer uma restrição de idade no campo de formulário Datepicker
- Como comparar duas datas no mesmo formulário
- Como adicionar validação de campo de código postal nos seus formulários
- Como efetuar comparações de campos nos seus WPForms
- Como adicionar validação de campo de endereço para Authorize.net