Como corrigir a duplicacao incorreta do Clone Field no ACF PRO
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.
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.
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
- 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' - 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') - 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 - 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) - 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
<?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
}














