Resumo de IA
Descrição
Ação que é disparada durante o processamento da entrada do formulário, após a validação inicial dos campos ter sido aprovada.
Parâmetros
- $fields
- array Valores/propriedades dos campos de entrada sanitizados.
- $entry
- array Original global $_POST.
- $form_data
- array Configurações/dados do formulário.
Fonte
wpforms/includes/class-process.php
Mais Informações
A ação wpforms_process é acionada no final do processamento da entrada do formulário. Ela é executada após todos os campos iniciais do formulário terem sido validados e higienizados.
Este hook deve ser usado quando a ação potencialmente precisa retornar um erro e interromper o processamento do formulário (veja Exemplos abaixo para detalhes).
Exemplos: verificar se uma conta de usuário existe ou validar dados para um gateway de pagamento.
Lembre-se que o processamento do formulário ainda pode ser interrompido/impedido após este hook ser acionado, por outro código usando o mesmo hook.
Veja a nota abaixo sobre outro hook similar que é acionado após toda a validação ser aprovada.
Nota importante: Se você está fazendo o processamento e não precisa de validação ou do ID da entrada, veja wpforms_process_complete.
Exemplos
No código de exemplo, você verá que primeiro verificamos o ID do formulário para garantir que ele corresponda ao formulário que está sendo alvo. Em seguida, verificamos um campo específico (pelo ID do campo) para ver se ele está vazio.
Apenas lembre-se 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 );
Perguntas Frequentes
P: Como eu direcionaria isso para dois formulários diferentes?
R: Se você quiser usar esta função apenas para alguns formulários, mas não para todos, você só precisa usar o símbolo em PHP que significa "ou".
Por exemplo, no trecho acima, você pode ver if ( absint( $form_data[ 'id' ] ) !== 5 ), isso simplesmente significa que executaremos esse trecho apenas no ID de formulário 5. Mas e se tivéssemos alguns formulários diferentes nos quais queríamos que isso fosse executado?
Existem algumas opções, vamos analisar cada opção abaixo.
1) Usando múltiplas funções
Se você quisesse apenas duplicar a função, dê um novo nome à função e atualize o número do ID do formulário. Você copiaria e colaria a função inteira e, em seguida, alteraria este nome wpf_dev_process para algo único no início e no final da função. Esta não é a maneira mais limpa, pois adicionará muitas linhas extras ao seu arquivo de funções, mas é mais fácil de ler e ainda eficaz.
2) Adicionando os IDs de formulário adicionais
A maneira mais fácil é apenas usar a instrução PHP or e adicionar os números de ID adicionais. O símbolo PHP para ou é ||. Portanto, se você quisesse que o código acima também fosse executado no formulário ID 7, você faria if ( absint( $form_data[ 'id' ] ) !== 5 || absint( $form_data[ 'id' ] ) !== 7 ).
Artigos de Referência
- Como Validar um Campo de URL de Mídia Social em Seu Formulário
- Como Restringir Números em um Campo de Texto de Linha Única
- Como Fornecer uma Restrição de Idade no Campo de Data do Formulário
- Como Comparar Duas Datas no Mesmo Formulário
- Como Adicionar Validação de Campo de CEP em Seus Formulários
- Como Realizar Comparações de Campos Dentro do Seu WPForms
- Como Adicionar Validação de Campo de Endereço para Authorize.net