<html lang="pt-pt" dir="ltr"><head></head><body>### [wpforms_process](https://wpforms.com/developers/wpforms_process/)

**Publicado:** 12 de fevereiro de 2021
**Autor:** Equipa Editorial

**Excerto:** Ação que é executada durante o processamento da entrada do formulário, após a validação inicial dos campos ter sido bem-sucedida.


**Conteúdo:**

## Descrição

Ação que é executada durante o processamento da entrada do formulário, após a validação inicial dos campos ter sido bem-sucedida.

## Parâmetros

$fields*array* Valores/propriedades dos campos de entrada sanitizados.$entry*array* Variável global $\_POST original.$form\_data*array* Configurações/dados do formulário.## Origem

`wpforms/includes/class-process.php`

## Mais Informações

A ação `wpforms_process` é executada perto do final do processamento da entrada do formulário. Ela é executada após todos os campos iniciais do formulário terem sido validados e sanitizados.

Este hook deve ser usado quando a ação potencialmente precisa de retornar um erro e interromper o processamento do formulário (ver **Exemplos** abaixo para mais detalhes).

Exemplos: verificar se uma conta de utilizador existe ou validar dados para um gateway de pagamento.

Por favor, lembre-se que o processamento do formulário ainda pode ser interrompido/impedido após a execução deste hook, por outro código que utilize o mesmo hook.

Veja a nota abaixo sobre outro hook semelhante que é executado após **toda** a validação ser bem-sucedida.

**Nota importante:** Se estiver a fazer o processamento e não precisar de validação ou do ID da entrada, veja [wpforms\_process\_complete](https://wpforms.com/developers/wpforms_process_complete/ "wpforms_process_complete").

## Exemplos

No código de exemplo, verá que primeiro verificamos o ID do formulário para garantir que corresponde ao formulário que está a ser alvo. Depois, 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.

```

/**
 * Ação que é executada durante o processamento da entrada do formulário após a validação inicial dos campos.
 *
 * @link   https://wpforms.com/developers/wpforms_process/
 *
 * @param  array  $fields    Valores/propriedades dos campos de entrada sanitizados.
 * @param  array  $entry     Variável global $_POST original.
 * @param  array  $form_data Dados e configurações do formulário.
 */

function wpf_dev_process( $fields, $entry, $form_data ) {
     
    // Opcional, pode limitar a formulários específicos. Abaixo, restringimos a saída para
    // o formulário nº 5.
    if ( absint( $form_data[ 'id' ] ) !== 5 ) {
        return $fields;
    }
     
    // verifica o campo ID 4 para ver se está vazio e, se estiver, executa o erro    
    if(empty( $fields[4][ 'value' ]) ) 
        {
            // Adiciona aos erros globais. Isto impedirá que a entrada do formulário seja guardada na base de dados.
            // Descomente a linha abaixo se precisar de exibir o erro acima do formulário.
            // wpforms()-&gt;process-&gt;errors[ $form_data[ 'id' ] ] = esc_html__( 'Ocorreu um erro.', 'plugin-domain' );    
 
            // Verifica o campo ID 4 e exibe a mensagem de erro no topo do formulário e abaixo do campo específico
               wpforms()-&gt;process-&gt;errors[ $form_data[ 'id' ] ] [ '4' ] = esc_html__( 'Ocorreu um erro.', 'plugin-domain' );
 
            // Adiciona lógica adicional (o que fazer se o erro não for exibido)
        }
    }
add_action( 'wpforms_process', 'wpf_dev_process', 10, 3 );
```

## FAQ

#### P: Como posso direcionar isto para dois formulários diferentes?

**R:** Se quiser usar esta função apenas para alguns formulários, mas não para todos, basta usar o símbolo em PHP que significa “**ou**“.

Por exemplo, no snippet acima, pode ver `if ( absint( $form_data[ 'id' ] ) !== 5 )`, isto significa simplesmente que vamos executar esse snippet apenas no formulário com o ID **5**. Mas e se tivéssemos alguns formulários diferentes nos quais queríamos que isto fosse executado?

Existem algumas opções, vejamos cada opção abaixo.

###### 1) Usando múltiplas funções

Se quisesse apenas duplicar a função, dar um novo nome à função e atualizar o número do ID do formulário. Copiaria e colaria toda a função e depois 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 extras ao seu ficheiro de funções, mas é mais fácil de ler e ainda eficaz.

###### 2) Adicionando os IDs de formulário adicionais

A forma mais fácil é apenas usar a instrução PHP `or` e adicionar os números de ID adicionais. O símbolo PHP para **ou** é **||e** o ID do formulário 7, você faria `if ( absint( $form_data[ 'id' ] ) !== 5 || $form_data[ 'id' ] ) !== 7)`.

## Artigos de Referência

- [Como validar um campo de URL de rede social no seu formulário](https://wpforms.com/developers/how-to-validate-a-social-media-url-field-in-your-form/ "Como validar um campo de URL de rede social no seu formulário")
- [Como restringir números num campo de texto de linha única do formulário](https://wpforms.com/developers/how-to-restrict-numbers-in-a-single-line-text-form-field/ "Como restringir números num campo de texto de linha única do formulário")
- [Como fornecer uma restrição de idade no campo de data do formulário](https://wpforms.com/developers/how-to-provide-an-age-restriction-on-the-datepicker-form-field/ "Como fornecer uma restrição de idade no campo de data do formulário")
- [Como comparar duas datas no mesmo formulário](https://wpforms.com/developers/how-to-compare-two-dates-in-the-same-form/ "Como comparar duas datas no mesmo formulário")
- [Como adicionar validação de campo de código postal nos seus formulários](https://wpforms.com/developers/how-to-add-zip-code-field-validation-on-your-forms/ "Como adicionar validação de campo de código postal nos seus formulários")
- [Como realizar comparações de campos dentro do seu WPForms](https://wpforms.com/developers/how-to-perform-field-comparisons-within-your-wpforms/ "Como realizar comparações de campos dentro do seu WPForms")
- [Como adicionar validação de campo de endereço para Authorize.net](https://wpforms.com/developers/how-to-add-address-field-validation-for-authorize-net/ "Como adicionar validação de campo de endereço para Authorize.net")

**Categorias:** Action Hooks

**Tags:** Processamento de Entrada, PHP

---</body></html>