Como traduzir campos personalizados do ACF no WordPress – Grupos de campos, repetidores, páginas de opções
Aprenda a traduzir todos os campos personalizados do ACF no seu site WordPress para todos os idiomas que seus visitantes falam. Este guia abrange grupos de campos, repetidores, conteúdo flexível, campos de imagem, páginas de opções e os próprios rótulos dos campos. O ACFML encaminha os campos do ACF e do ACF Pro pelo fluxo de trabalho de tradução do WPML para que eles sejam traduzidos junto com o conteúdo do seu post.
Antes de começar
Instale e ative estes plugins:
- Advanced Custom Fields ou ACF Pro.
- WPML e WPML Tradução de Strings.
- ACFML (o complemento que esta página aborda).
Seus grupos de campos já devem estar configurados no ACF. Você pode alterar as preferências de tradução por campo depois, então a ordem das operações não importa. Configure os grupos de campos e, em seguida, volte para o ACFML.
Escolha um modo de tradução para cada grupo de campos
Nem todos os grupos de campos do ACF se comportam da mesma maneira durante a tradução. O ACFML oferece três modos por grupo de campos, definidos em ACF → Grupos de campos, na seção Configuração multilíngue:
Mesmos campos em todos os idiomas
A configuração típica para a maioria dos sites com ACF. Traduza os valores dos campos para cada idioma enquanto a estrutura permanece a mesma. A página Nossa equipe é o exemplo clássico. Sua equipe é a mesma em todos os idiomas, portanto, o nome e a biografia de cada membro da equipe são traduzidos por idioma enquanto a estrutura do campo permanece intacta. Você insere a equipe no idioma de origem e, em seguida, envia o post para tradução em WPML → Traduções → Painel; os valores traduzidos voltam vinculados aos mesmos campos.
Campos diferentes em todos os idiomas
Use quando cada idioma mostrar um conteúdo fundamentalmente diferente no mesmo grupo de campos. O caso clássico é uma empresa que realiza eventos localizados. A página Eventos em inglês mostra eventos para o público inglês, a página em francês mostra eventos para o público francês. Defina o grupo de campos como Campos diferentes em todos os idiomas e, em seguida, abra o post que você quer localizar → na caixa Idiomas à direita, clique no ícone de adição para o idioma de destino → um rascunho em branco será aberto com campos personalizados vazios → preencha os valores específicos do idioma e publique.
Modo especialista
Use quando você precisar de uma mistura: alguns campos são traduzidos por idioma, outros permanecem os mesmos, outros são copiados uma vez e depois divergem. Escolha Modo especialista na configuração do grupo de campos e defina a preferência por campo. O exemplo de Eventos com comportamento misto: título e descrição definidos como Traduzir; preço, data e endereço definidos como Copiar.
Preferências de tradução para cada tipo de campo do ACF
Cada campo em um grupo de campos tem uma das quatro preferências de tradução:
- Traduzir. O valor do campo é traduzido por idioma.
- Copiar. O valor do campo permanece sincronizado em todos os idiomas; edite-o uma vez e ele se propagará.
- Copiar uma vez. O valor do campo serve como base para a tradução e, em seguida, a versão de cada idioma pode ser editada de forma independente.
- Não traduzir. O campo é ignorado pela etapa de tradução.
Ao escolher Mesmos campos em todos os idiomas ou Campos diferentes em todos os idiomas, cada campo recebe uma preferência padrão adequada com base no seu tipo de campo. As tabelas abaixo mostram esses padrões. Use o Modo especialista para substituí-los por campo ou use o filtro acfml_field_group_mode_field_translation_preference para substituir o padrão de um tipo de campo em todo o site (consulte Hooks de desenvolvedor para casos extremos abaixo).
Repetidor e conteúdo flexível – Copiar ou copiar uma vez
Para campos de repetidor e conteúdo flexível, você escolhe entre dois comportamentos no nível da linha antes que as preferências de subcampos entrem em ação:
- Copiar. Mesmo layout e número de linhas em todos os idiomas. Os tradutores veem as mesmas linhas; os subcampos são traduzidos de acordo com suas próprias preferências.
- Copiar uma vez. Cada idioma pode ter um layout diferente e um número diferente de linhas após a cópia inicial.
Escolha Copiar quando a estrutura for a mesma em todos os idiomas (na maioria dos casos). Escolha Copiar uma vez quando as versões em cada idioma divergirem estruturalmente (por exemplo, uma lista de eventos diferente por idioma).
Campos básicos
| Tipo | Mesmos campos em todos os idiomas | Campos diferentes em todos os idiomas |
|---|---|---|
| Texto | Traduzir | Traduzir |
| Área de texto | Traduzir | Traduzir |
| Número | Copiar | Copiar uma vez |
| Intervalo | Copiar | Copiar uma vez |
| Copiar | Copiar uma vez | |
| URL | Copiar | Copiar uma vez |
| Senha | Copiar | Copiar uma vez |
Campos de conteúdo
| Tipo | Mesmos campos em todos os idiomas | Campos diferentes em todos os idiomas |
|---|---|---|
| Imagem | Copiar | Copiar uma vez |
| Arquivo | Copiar | Copiar uma vez |
| Editor WYSIWYG | Traduzir | Traduzir |
| oEmbed | Copiar | Copiar uma vez |
| Galeria | Copiar | Copiar uma vez |
Campos de escolha
| Tipo | Mesmos campos em todos os idiomas | Campos diferentes em todos os idiomas |
|---|---|---|
| Seleção | Copiar | Copiar uma vez |
| Caixa de seleção | Copiar | Copiar uma vez |
| Botão de rádio | Copiar | Copiar uma vez |
| Grupo de botões | Copiar | Copiar uma vez |
| Verdadeiro / Falso | Copiar | Copiar uma vez |
Campos jQuery
| Tipo | Mesmos campos em todos os idiomas | Campos diferentes em todos os idiomas |
|---|---|---|
| Google Map | Copiar | Copiar uma vez |
| Seletor de data | Copiar | Copiar uma vez |
| Seletor de data e hora | Copiar | Copiar uma vez |
| Seletor de hora | Copiar | Copiar uma vez |
| Seletor de cores | Copiar | Copiar uma vez |
Campos de layout
| Tipo | Mesmos campos em todos os idiomas | Campos diferentes em todos os idiomas |
|---|---|---|
| Mensagem | Traduzir | Traduzir |
| Sanfona | Copiar | Copiar uma vez |
| Aba | Copiar | Copiar uma vez |
| Grupo | Copiar | Copiar uma vez |
| Repetidor | Copiar | Copiar uma vez |
| Conteúdo flexível | Copiar | Copiar uma vez |
| Clone | Copiar | Copiar uma vez |
Campos relacionais
| Tipo | Mesmos campos em todos os idiomas | Campos diferentes em todos os idiomas |
|---|---|---|
| Link | Copiar | Copiar uma vez |
| Objeto de post | Copiar | Copiar uma vez |
| Link de página | Copiar | Copiar uma vez |
| Relacionamento | Copiar | Copiar uma vez |
| Taxonomia | Copiar | Copiar uma vez |
| Usuário | Copiar | Copiar uma vez |
Como definir preferências para campos registrados em PHP ou JSON
Os grupos de campos do ACF registrados em PHP (via acf_add_local_field_group()) ou por meio do recurso Local JSON do ACF não recebem as preferências de tradução da interface de administração, porque o painel de administração não as gerencia. Defina as preferências no mesmo lugar onde você registra os campos.
Para cada campo na definição do grupo de campos, adicione uma chave wpml_cf_preferences. O valor é um número inteiro que corresponde às quatro preferências de tradução: 0 para Não traduzir (o WPML ignora o campo), 1 para Copiar (o valor permanece sincronizado em todos os idiomas), 2 para Traduzir (o valor passa pela tradução) e 3 para Copiar uma vez (o valor é copiado para novas traduções e, em seguida, cada idioma pode ser editado independentemente).
Um exemplo mínimo:
acf_add_local_field_group( [
'key' => 'group_1',
'title' => 'My Group',
'fields' => [
[
'key' => 'field_1',
'label' => 'Sub Title',
'name' => 'sub_title',
'type' => 'text',
'wpml_cf_preferences' => 2, // Translate.
],
],
// ...rest of the field-group config
] );
Depois de definir os campos no código, sincronize as preferências no WPML para que o painel de administração as reconheça:
- Vá para ACF → Ferramentas.
- Role até Traduzir campos ACF registrados em PHP e JSON local.
- Em Sincronizar preferências de tradução para campos locais, escolha Sincronizar uma vez agora e clique em Aplicar.
O WPML lê as preferências das suas definições em PHP e as armazena. A sincronização é executada uma vez quando você a aciona, não a cada carregamento de página.
Se você usar o recurso Local JSON do ACF para compartilhar grupos de campos entre sites, o ACFML gravará as preferências de tradução nos arquivos JSON automaticamente. Exporte um arquivo JSON de um site, importe-o em outro, e o site de destino assumirá as preferências assim que o ACFML estiver ativo em ambos os lados.
Como traduzir rótulos de campos do ACF
Os rótulos de campos do ACF são os nomes que identificam cada campo personalizado no editor do WordPress e no front-end (por exemplo, Número de telefone, Endereço). Eles são traduzidos separadamente dos valores dos campos e ficam na WPML Tradução de Strings, não no trabalho de tradução do post.
Para enviar rótulos de campos para tradução:
- Abra WPML → Traduções → Painel.
- Expanda a seção Grupo de campos do ACF.
- Selecione o item Rótulos do grupo de campos para o grupo de campos que você quer traduzir.
- Escolha um método de tradução (PTC, seu tradutor ou Traduzir eu mesmo) e envie.
Os rótulos traduzidos aparecem no front-end automaticamente assim que a tradução for concluída.
Como traduzir escolhas de campos do ACF
Os campos de escolha (Seleção, Caixa de seleção, Botão de rádio, Grupo de botões) carregam seus próprios rótulos de opções (por exemplo, Pequeno / Médio / Grande). Eles também ficam junto com os rótulos dos campos, em vez de dentro da tradução do post. Envie-os da mesma maneira:
- Abra WPML → Traduções → Painel.
- Expanda a seção Grupo de campos do ACF.
- Selecione o grupo de campos cujos valores de escolha você quer traduzir.
- Escolha um método de tradução e envie.
Como traduzir páginas de opções do ACF
As páginas de opções do ACF (telas de configurações globais, como Detalhes de contato, Configurações de cabeçalho, Links de rodapé) são traduzidas como seu próprio tipo de objeto, separadamente dos posts:
- Abra WPML → Traduções → Painel.
- Expanda a seção Opções do ACF.
- Selecione a página de opções que você quer traduzir.
- Escolha um método de tradução e envie.
Os valores da página de opções de cada idioma aparecem automaticamente quando o ACF lê a opção no contexto daquele idioma.
Armadilhas comuns
- Os rótulos dos campos aparecem sem tradução. Eles ficam na Tradução de Strings, não na tradução do post. Envie o item Rótulos do grupo de campos do grupo de campos a partir do Painel (consulte Como traduzir rótulos de campos do ACF acima).
- Os valores de escolha aparecem sem tradução. Mesma situação. Envie o grupo de campos a partir da seção Grupo de campos do ACF do Painel para que os valores das opções sejam incluídos.
- As linhas do repetidor ficam fora de sincronia. O campo provavelmente está definido como Copiar uma vez, quando Copiar manteria as linhas alinhadas. Abra o grupo de campos → mude o comportamento do campo de repetidor para Copiar.
- A lógica condicional se comporta de forma inesperada. Quando o campo de controle está definido como Copiar ou Não traduzir, o comportamento condicional segue o valor do idioma de origem em todas as traduções. Defina o campo de controle como Traduzir se o valor dele precisar ser diferente por idioma.
- Os campos locais (registrados em PHP) ignoram as preferências de tradução definidas no painel de administração. Defina a chave
wpml_cf_preferencesna própria definição do grupo de campos e sincronize a partir de ACF → Ferramentas. O procedimento está em Como definir preferências para campos registrados em PHP ou JSON acima. O ACFML 2.2.0 (fevereiro de 2026) adicionou suporte completo a campos locais; as versões mais antigas tinham limitações nesse aspecto.
Hooks de desenvolvedor para casos extremos
Para controle programático (optar por não traduzir campos específicos, substituir a preferência padrão para um tipo de campo em todo o site, ocultar anotações dos tradutores ou excluir strings de grupos de campos de trabalhos de tradução de posts), o ACFML expõe dois filtros e quatro constantes. A referência completa com exemplos de código está em Referência de hooks e constantes do ACFML.
Escrito por Amir · Última atualização em 2 de julho de 2026
Escrito por Amir · Última atualização em 2 de julho de 2026