# Como corrigir a duplicacao incorreta do Clone Field no ACF PRO

O ACF Clone Field não funciona corretamente quando duas instancias clonadas do mesmo grupo compartilham a mesma field_key e se sobrescrevem ao salvar. A correção oficial e usar Prefix Field Names com o modo de exibicao Group para dar nomes unicos a cada copia.

## O que é duplicacao incorreta do Clone Field no ACF PRO?

O ACF Clone Field permite reaproveitar campos já existentes sem recriar entradas no banco: ele carrega e exibe os campos selecionados em tempo de execução, transformando um grupo de campos em um módulo reutilizavel. Você escolhe se a copia aparece como um bloco agrupado (Display Group) ou substituindo o próprio Clone pelos campos selecionados (Display Seamless), e pode prefixar tanto os rotulos quanto os nomes dos campos clonados.

A duplicacao incorreta acontece quando o mesmo campo e clonado mais de uma vez no mesmo grupo sem prefixo de nome. Como cada subcampo clonado mantem a field_key original, segundo a documentação oficial do ACF as duas copias compartilham a mesma chave e uma sobrescreve a outra ao salvar, mesmo que os nomes pareçam diferentes na tela. O resultado e um campo que duplica visualmente mas perde dados, mostra valores trocados entre as copias ou retorna vazio no get_field.

## Como identificar

- Ao salvar um post com duas copias do mesmo grupo clonado, apenas uma guarda o valor e a outra volta em branco.
- Os valores aparecem trocados entre as duas instancias do Clone Field depois de salvar e recarregar a tela.
- A documentação do ACF descreve exatamente o sintoma: 'A cloned sub field may not be able to save its value if it exists alongside another instance of itself'.
- O get_field ou get_sub_field do campo clonado retorna vazio ou o valor da outra copia no frontend.
- Dois grupos clonados com o mesmo nome de campo passam a ler e gravar do mesmo registro no banco, em vez de manter dados separados.

**Antes de começar:** Antes de alterar Prefix Field Names ou o modo de exibicao de um Clone Field em producao, faça backup do site (arquivos e banco de dados) ou teste em staging. Mudar o nome dos campos altera as meta_keys salvas e pode deixar dados antigos orfaos, exigindo remapeamento.

## Como prevenir

- Sempre que clonar o mesmo grupo mais de uma vez no mesmo post, ative Prefix Field Names para gerar nomes unicos por copia e evitar sobrescrita.
- Padronize a combinacao Prefix Field Names com Display Group e reserve o Seamless sem prefixo para uso único dentro de Repeater ou Flexible Content.
- Mantenha uma convencao de nomes de campos por grupo, evitando reaproveitar o mesmo Field Name em grupos diferentes que possam ser clonados juntos.
- Antes de publicar um layout novo, teste o salvamento com valores distintos em cada copia clonada para flagrar conflito de field_key antes de ir ao ar.

Erros relacionados

- [Como corrigir o Clone Field que não duplica campos no ACF PRO](https://full.services/wp-fixer/corrigir-clone-field-acf-pro/)
- [Como corrigir o conflito de Custom Fields entre ACF PRO e JetEngine](https://full.services/wp-fixer/corrigir-conflito-custom-fields-acf-jetengine/)
- [Como corrigir o Repeater Field que não salva dados no ACF PRO](https://full.services/wp-fixer/corrigir-repeater-nao-salva-acf-pro/)

## Causa

- Duas instancias do mesmo subcampo clonado coexistem no mesmo grupo e compartilham a field_key original; conforme a doc oficial, elas se sobrescrevem ao salvar mesmo com nomes prefixados diferentes.
- A opção Prefix Field Names esta desligada no Clone Field, entao as copias salvam e carregam usando o mesmo nome de campo do grupo de origem, gerando conflito de dados.
- O Clone Field foi configurado com Display Seamless e ao mesmo tempo com Prefix Field Names, combinacao que a doc desaconselha porque o prefixo so e coerente no modo Group.
- Um campo foi clonado para dentro de um grupo que já possui um campo com o mesmo nome (por exemplo, clonar um campo 'título' em um grupo que já tem 'título'), criando conflito de dados na gravacao.
- O mesmo grupo de campos e clonado em mais de um lugar do mesmo post (por exemplo, duas vezes na mesma página) sem prefixo, fazendo as duas copias apontarem para a mesma meta_key no banco.

## Como resolver

1. Ative Prefix Field Names no Clone Field: Abra o grupo de campos, edite o Clone Field e ligue a opção Prefix Field Names. Isso muda o nome real usado para salvar e carregar cada copia, permitindo clonar o mesmo grupo várias vezes com nomes distintos e impedindo que uma copia sobrescreva a outra.

```
Painel WP -> ACF -> Grupos de Campos -> abra o grupo
Edite o campo do tipo Clone
Marque a opção 'Prefix Field Names'
```

2. Use Display Group em vez de Seamless: Ainda no Clone Field, ajuste a opção Display para Group. A documentação recomenda a combinacao Prefix Field Names com Group e desaconselha prefixar no modo Seamless, porque o prefixo so produz nomes coerentes quando os campos ficam agrupados.

```
No mesmo Clone Field, localize a opção 'Display'
Selecione 'Group' (em vez de 'Seamless')
```

3. Garanta nomes unicos entre o grupo de origem e o destino: Verifique se algum campo clonado tem o mesmo nome de um campo já presente no grupo de destino. Conforme a doc, clonar um campo com nome já usado no grupo cria conflito de dados. Renomeie o campo ou confie no prefixo para diferenciar.

```
Liste os nomes (Field Name) dos campos do grupo de destino
Compare com os nomes dos campos clonados
Renomeie ou prefixe os que colidirem
```

4. Atualize a leitura no código do tema: Com o prefixo ativo, o nome do campo no frontend passa a incluir o prefixo do Clone. Ajuste as chamadas get_field para usar o novo nome prefixado, senao a leitura retorna vazio mesmo com o dado salvo corretamente.

```
Localize as chamadas get_field do campo clonado no tema
Troque o nome antigo pelo nome com prefixo (ex.: hero_button_text)
```

5. Reabra o post e revalide o salvamento: Depois de ajustar o Clone Field, edite um post que usa as duas copias, preencha valores diferentes em cada uma, salve e recarregue. Os dados devem permanecer separados e não mais se sobrescrever.

```
Edite um post que usa as duas copias do Clone
Preencha valores distintos em cada copia e salve
Recarregue e confirme que cada copia manteve seu valor
```


## Código

```php
<?php
// Le um Clone Field com Display Group + Prefix Field Names ativos.
// Cada copia salva sob seu proprio prefixo, evitando sobrescrita.
$hero = get_field( 'hero' ); // grupo clonado e prefixado
if ( $hero ) {
    echo esc_html( $hero['button_text'] ); // hero_button_text no banco
    echo esc_url( $hero['button_url'] );    // hero_button_url no banco
}

// Segunda copia do mesmo grupo, com outro prefixo, sem conflito de chave.
$welcome = get_field( 'welcome' );
if ( $welcome ) {
    echo esc_html( $welcome['button_text'] ); // welcome_button_text no banco
}
```

## Perguntas frequentes

### Por que meu Clone Field do ACF perde o valor ao salvar

Porque duas copias do mesmo campo clonado compartilham a mesma field_key e se sobrescrevem ao salvar, conforme a documentação do ACF. Ative Prefix Field Names no Clone Field para que cada copia salve com um nome único e os dados deixem de se sobrepor.

### O que faz a opção Prefix Field Names no Clone Field

Ela altera o nome real usado para salvar e carregar os dados dos campos clonados, prefixando com o nome do Clone. Assim e possível clonar o mesmo grupo várias vezes com nomes distintos, como hero_button_text e welcome_button_text, sem conflito.

### Qual a diferenca entre Display Group e Display Seamless no Clone

O Group exibe os campos clonados como um subgrupo nomeado, ideal para reutilizar módulos com prefixo. O Seamless substitui o próprio Clone pelos campos selecionados e funciona bem dentro de Repeater ou Flexible Content, mas sem prefixar.

### Posso clonar o mesmo grupo duas vezes no mesmo post

Pode, desde que use Prefix Field Names com Display Group. Sem prefixo, as duas copias apontam para a mesma chave de campo e uma sobrescreve a outra, que e a causa da duplicacao incorreta.

### Por que o get_field retorna vazio depois de ativar o prefixo

Porque o prefixo muda o nome do campo no frontend. Você precisa atualizar as chamadas get_field para o novo nome prefixado do Clone, senao a função procura por um nome que não existe mais e retorna vazio.

### Clonar um campo com nome já usado no grupo causa problema

Sim. A documentação do ACF avisa que e possível criar conflito de dados ao clonar um campo com um nome já usado no grupo de destino. Renomeie o campo ou ative o prefixo para diferenciar as chaves.

### Devo usar prefixo no Display Seamless

Não. A doc recomenda combinar Prefix Field Names apenas com Display Group e evitar prefixo no Seamless, porque no modo Seamless os campos substituem o Clone e o prefixo não gera nomes coerentes.

### Mudar o prefixo de um Clone já em producao perde dados

Os dados antigos não somem, mas ficam orfaos sob a meta_key antiga porque o nome do campo muda. Faça backup, planeje o remapeamento dos valores existentes e teste em staging antes de alterar o prefixo em producao.

**Fonte:** [Advanced Custom Fields — Clone Field](https://www.advancedcustomfields.com/resources/clone/)
