# Como corrigir o mapeamento de campos no User Registration do WPForms

O mapeamento de campos no User Registration do WPForms falha quando os dropdowns em Settings -> User Registration não apontam para os campos certos do formulário, quando o campo Email obrigatório esta ausente ou quando a Meta Key de um custom user meta não casa com o nome real do campo, fazendo os dados não chegarem ao perfil do usuário.

## O que é mapeamento de campos no User Registration do WPForms?

O addon User Registration do WPForms conecta cada campo do formulário a um campo do perfil de usuário do WordPress. Isso e feito na aba Settings -> User Registration do construtor de formulários, onde dropdowns ligam os campos do formulário aos campos de perfil: Username, Email, Password, Name, Display Name, Website e Biographical Info, além da seção Custom User Meta para dados extras. O mapeamento e o que transforma uma submissao em um usuário real com os dados nos lugares certos.

Quando esse mapeamento quebra, a submissao do formulário não gera o usuário esperado ou cria um usuário com campos vazios: o e-mail não chega, o nome de usuário sai em branco, ou os dados de um custom user meta (por exemplo um campo do ACF) não aparecem no perfil. Segundo a documentação oficial do WPForms, o formulário precisa de um campo Email mapeado porque o WordPress exige um e-mail para criar a conta, e o Username e o Password são igualmente obrigatorios para o perfil.

## Como identificar

- A submissao do formulário e registrada como entrada no WPForms, mas nenhum usuário novo aparece em Usuários -> Todos os usuários no WordPress.
- O usuário e criado, porém com o campo de e-mail, nome de usuário ou nome em branco no perfil.
- Mensagem 'This email address is already registered' ou 'Please enter a valid email address' bloqueia o cadastro mesmo com o campo preenchido.
- Os dados de um Custom User Meta (como um campo do ACF) não aparecem no perfil do usuário após o cadastro.
- O dropdown da aba Settings -> User Registration aparece vazio ('Select a field') porque o campo correspondente foi renomeado ou removido do formulário.
- Aviso 'User Registration' indisponivel ou a aba não aparece nas configurações do formulário porque o addon não esta ativo.

**Antes de começar:** Antes de alterar os campos do formulário, o mapeamento ou de testar criação de usuários em producao, faça um backup do site (arquivos e banco de dados) ou teste primeiro em um ambiente de staging, para reverter sem deixar contas de teste ou dados incorretos no perfil dos usuários reais.

## Como prevenir

- Mantenha o addon User Registration e o WPForms sempre na versão estavel mais recente, validando em staging para acompanhar mudancas na estrutura de campos.
- Nunca renomeie ou exclua um campo do formulário sem revisar em seguida os dropdowns da aba Settings -> User Registration que apontavam para ele.
- Padronize as Meta Keys dos custom user meta copiando o nome exato da origem (como o Field Name do ACF) em vez de digitar a mao.
- Após qualquer ajuste no formulário de cadastro, faça um envio de teste e confira o perfil do usuário criado antes de publicar a mudanca.

Erros relacionados

- [Como corrigir entradas que não salvam no banco de dados no WPForms](https://full.services/wp-fixer/corrigir-entries-nao-salvam-wpforms/)
- [Como corrigir o erro de redirecionamento após envio no WPForms](https://full.services/wp-fixer/corrigir-redirecionamento-wpforms/)
- [Como corrigir o Post Submissions que não cria posts no WPForms](https://full.services/wp-fixer/corrigir-post-submissions-wpforms/)

## Causa

- Na aba Settings -> User Registration, o dropdown do Username, Email ou Password esta em 'Select a field' (sem campo selecionado), entao o WPForms não tem de onde tirar esse dado obrigatório para criar o usuário.
- O formulário não contem um campo do tipo Email mapeado, e o WordPress exige um endereco de e-mail para criar a conta, conforme a documentação oficial do User Registration addon.
- Na seção Custom User Meta, a Meta Key digitada não casa com o nome real da meta (por exemplo o Field Name gerado pelo ACF), entao o valor e gravado em uma chave errada e não aparece no perfil.
- Um campo do formulário foi renomeado, reordenado ou excluido depois de configurado o mapeamento, deixando o dropdown correspondente apontando para um campo inexistente.
- O addon User Registration esta desatualizado ou inativo, fazendo a aba Settings -> User Registration sumir ou os mapeamentos antigos pararem de gravar.
- Lógica condicional no formulário oculta o campo Email ou Username no momento do envio, de modo que o valor chega vazio e o mapeamento falha ao criar o usuário.

## Como resolver

1. Confirme que o addon User Registration esta ativo e atualizado: Sem o addon ativo a aba de mapeamento nem aparece. Verifique a instalação e a versão antes de mexer no formulário, já que mapeamentos antigos podem ter quebrado em uma atualização da estrutura de campos.

```
Painel WP -> WPForms -> Addons -> localize 'User Registration Addon'
Clique em Update se houver atualização, ou em Activate se estiver inativo
```

2. Garanta um campo Email no formulário: O WordPress exige um e-mail para criar a conta, entao o formulário precisa de um campo Email valido. Adicione-o se não existir, antes de abrir o mapeamento.

```
Painel WP -> WPForms -> Todos os formulários -> abra o formulário de cadastro
Na aba Fields, arraste um campo 'Email' para o formulário caso ele não exista
```

3. Refaça o mapeamento dos campos obrigatorios: Abra Settings -> User Registration e use os dropdowns para apontar Username, Email e Password para os campos certos do formulário. Nenhum desses três pode ficar em 'Select a field', pois são obrigatorios para criar o usuário.

```
No construtor do formulário, abra a aba Settings -> User Registration
No dropdown 'Email', selecione o campo Email do formulário
Nos dropdowns 'User Name' e 'Password', selecione os campos correspondentes (ou 'Auto Generate' no Password)
```

4. Corrija a Meta Key dos custom user meta: Na seção Custom User Meta, a Meta Key precisa ser identica ao nome real da meta (por exemplo o Field Name gerado pelo ACF). Copie o nome exato da origem e selecione o campo do formulário no dropdown 'Select Field'.

```
Em ACF -> Grupos de Campos, copie o 'Field Name' exato do campo de destino
Na aba Settings -> User Registration -> Custom User Meta, cole esse nome em 'Meta Key'
No dropdown 'Select Field' ao lado, escolha o campo do formulário que alimenta essa meta
```

5. Teste a criação do usuário e confira o perfil: Envie o formulário com dados de teste e confirme em Usuários que o registro foi criado com e-mail, nome e os custom meta corretos. Se um campo ainda chegar vazio, revise se a lógica condicional não esta ocultando o campo no envio.

```
Abra o formulário publicado e envie um cadastro de teste
Painel WP -> Usuários -> Todos os usuários -> abra o usuário criado e confira os campos
Se algo faltar, revise a aba Logic do campo Email/Username para garantir que ele não e ocultado no envio
```


## Código

```php
<?php
/**
 * Grava metas extras do usuario apos o User Registration do WPForms criar a conta.
 * Use quando um custom user meta nao aparece na lista de mapeamento da UI.
 *
 * @param int   $user_id     ID do usuario recem-criado.
 * @param array $fields       Campos enviados (indexados pelo ID do campo).
 * @param array $form_data    Configuracao do formulario.
 * @param int   $userdata     Dados passados ao wp_insert_user.
 */
add_action( 'wpforms_user_registered', 'full_wpforms_map_extra_user_meta', 10, 4 );
function full_wpforms_map_extra_user_meta( $user_id, $fields, $form_data, $userdata ) {
    // Aplica somente ao formulario de cadastro correto (ajuste o ID).
    if ( empty( $form_data['id'] ) || (int) $form_data['id'] !== 123 ) {
        return;
    }

    // ID do campo do formulario -> meta key real no perfil do usuario.
    $map = array(
        5 => 'telefone_contato', // campo 5 do form -> meta 'telefone_contato'
        7 => 'empresa',          // campo 7 do form -> meta 'empresa'
    );

    foreach ( $map as $field_id => $meta_key ) {
        if ( ! empty( $fields[ $field_id ]['value'] ) ) {
            update_user_meta( $user_id, $meta_key, sanitize_text_field( $fields[ $field_id ]['value'] ) );
        }
    }
}
```

## Perguntas frequentes

### Por que o WPForms não cria o usuário após o envio do formulário

Quase sempre porque um campo obrigatório não foi mapeado em Settings -> User Registration. O WordPress exige Username, Email e Password para criar a conta. Abra essa aba e confirme que nenhum desses três dropdowns esta em 'Select a field'.

### Onde fica o mapeamento de campos do User Registration no WPForms

No construtor do formulário, em Settings -> User Registration. Ali os dropdowns ligam cada campo do formulário ao campo de perfil do WordPress, como Username, Email, Password, Name e os custom user meta.

### Por que meu Custom User Meta não aparece no perfil do usuário

Geralmente porque a Meta Key digitada não casa com o nome real da meta. Se a origem for o ACF, copie o Field Name exato gerado pelo plugin e cole no campo Meta Key, depois selecione o campo do formulário no dropdown Select Field.

### Preciso de um campo Email no formulário de cadastro do WPForms

Sim. A documentação do WPForms afirma que o formulário precisa de um campo Email mapeado, porque o WordPress exige um endereco de e-mail para criar uma nova conta. Sem ele o usuário não e criado.

### Posso deixar o WPForms gerar a senha automaticamente no cadastro

Sim. No dropdown de Password da aba User Registration existe a opção de auto gerar uma senha forte em vez de mapear um campo do formulário. Use isso quando não quiser pedir senha ao usuário na inscricao.

### Por que o dropdown de mapeamento aparece vazio para um campo

Porque o campo do formulário que estava mapeado foi renomeado, reordenado ou excluido. O dropdown perde a referencia e volta para 'Select a field'. Reabra a aba User Registration e selecione novamente o campo correto.

### Como gravar um meta de usuário que o WPForms não oferece na lista

Você pode usar o hook wpforms_user_registered no functions.php do tema filho para gravar metas extras com update_user_meta após a criação do usuário, lendo o valor do campo direto da submissao do formulário.

**Fonte:** [WPForms — User Registration Addon (Field Mapping)](https://wpforms.com/docs/how-to-install-and-use-user-registration-addon-with-wpforms/)
