🎉 USE O CUPOM FIM.DE.SEMANA.FULL | 20% OFF acima de R$ 100,00

Como corrigir a tradução de Custom Fields do ACF PRO no WPML

Time Full Services Time Full Services
Tipo Multisite & Multilingue
Nome do erro Tradução de custom fields do ACF não funciona no WPML EN: ACF custom field translations not working in WPML
Severidade Atenção
Descrição A tradução de fields do ACF no WPML não funciona quando a preferência de tradução do campo está em Don't translate ou Copy, quando o grupo de campos não está marcado como traduzível no Multilingual Content Setup, ou quando o ACFML não está ativo. Ajustar a preferência para Translate libera o valor do campo para o idioma traduzido.

O que é tradução de fields do ACF no WPML?

A tradução de fields do ACF no WPML depende do ACFML (Advanced Custom Fields Multilingual), o componente que vem incluído no WPML e conecta os custom fields ao editor de tradução. Cada campo do ACF recebe uma preferência de tradução que decide o destino do valor entre idiomas: Translate libera o valor para ser traduzido, Copy mantém o mesmo valor em todos os idiomas, Copy Once copia o valor uma única vez para edição independente depois, e Don’t translate (padrão de campos ainda não configurados) faz o WPML ignorar o campo. Quando o campo certo está na preferência errada, o valor traduzido simplesmente não aparece no idioma secundário.

O problema também surge no nível do grupo de campos. Em Multilingual Content Setup, o grupo precisa estar configurado como traduzível e com a opção Same fields across languages; campos definidos por PHP ou JSON, sem interface, dependem do filtro acfml_field_group_mode_field_translation_preference ou de uma entrada custom-fields no wpml-config.xml para herdar a preferência correta. Sem ACFML ativo, sem a preferência Translate ou com o grupo fora do Multilingual Content Setup, o WPML não envia o campo ao editor de tradução e o front-end exibe o valor do idioma original ou vazio.

Como identificar

  • O valor de um custom field do ACF aparece igual em todos os idiomas mesmo depois de traduzir a página, em vez de mostrar o texto traduzido.
  • O campo do ACF não aparece no Advanced Translation Editor do WPML, então não há onde digitar a tradução.
  • O field traduzido fica vazio no idioma secundário enquanto o idioma padrão exibe o valor normalmente.
  • No editor de tradução surge o aviso ‘Don’t translate’ ao lado do campo do ACF, sinalizando que ele está sendo ignorado.
  • Campos de um Repeater ou Flexible Content somem ou ficam sem os subitens no idioma traduzido após a tradução.
Antes de começar: Antes de editar o wpml-config.xml, adicionar filtros via PHP ou alterar preferências de tradução em massa em produção, faça um backup completo do site (arquivos e banco) ou teste primeiro em um ambiente de staging, porque mudar a preferência de um campo já traduzido pode sobrescrever traduções existentes.

Como prevenir

  • Defina a preferência de tradução de cada campo logo ao criar o grupo, em vez de deixar em Don’t translate, que é o padrão e faz o WPML ignorar o campo.
  • Padronize: textos visíveis em Translate, valores idênticos entre idiomas (números, imagens, opções) em Copy, e estruturas que variam por idioma em Copy Once.
  • Para campos registrados por PHP ou local JSON, fixe a preferência com o filtro acfml_field_group_mode_field_translation_preference ou via wpml-config.xml, evitando que nasçam como Don’t translate.
  • Após qualquer mudança de preferência, limpe o cache do WPML em Support e Troubleshooting e revalide a tradução de uma página de exemplo antes de publicar.

Causa

  • A preferência de tradução do campo está em Don't translate, opção padrão de campos ainda não configurados, fazendo o WPML ignorar o valor e nunca enviá-lo ao editor de tradução.
  • O campo de texto está marcado como Copy em vez de Translate, então o WPML replica o valor do idioma original em todos os idiomas e bloqueia a edição da tradução.
  • O grupo de campos não está com a opção Same fields across languages no Multilingual Content Setup, deixando o ACFML sem instrução para expor os campos ao editor de tradução.
  • Os campos foram registrados via PHP ou local JSON e não têm preferência definida, exigindo o filtro acfml_field_group_mode_field_translation_preference ou uma entrada custom-fields no wpml-config.xml que não foi criada.
  • Um Repeater ou Flexible Content está em Copy quando deveria estar em Copy Once, forçando a mesma estrutura entre idiomas e impedindo conteúdo traduzido distinto nos subcampos.
  • O ACFML não está ativo em WPML -> Plugins, ou o cache do WPML guardou a configuração antiga de tradução do campo após a alteração da preferência.

Como resolver

  1. Confirme que o ACFML está ativo: O ACFML é o componente do WPML que liga o ACF ao editor de tradução. Sem ele, nenhuma preferência de campo é aplicada. Ative-o na lista de componentes do WPML antes de qualquer outro ajuste.
    Painel WP -> Plugins -> verifique se 'Advanced Custom Fields Multilingual' está ativo
    Painel WP -> WPML -> confirme que o ACF aparece como compatível
  2. Ajuste a preferência de tradução do campo: Abra o grupo de campos no editor do ACF e defina a preferência de cada campo. Use Translate para textos que mudam por idioma, Copy para valores idênticos como números e imagens, e Copy Once quando quiser começar de uma cópia editável depois. Campos de texto que precisam de tradução não podem ficar em Don't translate nem em Copy.
    Painel WP -> ACF -> Grupos de Campos -> abra o grupo
    Em cada campo de texto defina a preferência de tradução como Translate
    Em campos como Número, True/False e Imagem mantenha Copy
  3. Configure o Multilingual Content Setup do grupo: Ainda no editor do grupo de campos, role até Multilingual Content Setup e garanta que o grupo esteja traduzível com Same fields across languages. Use o modo Expert apenas se precisar de preferências distintas por campo dentro do mesmo grupo.
    Painel WP -> ACF -> Grupos de Campos -> abra o grupo -> seção Multilingual Content Setup
    Selecione 'Same fields across languages'
    Use 'Expert' somente para definir preferências campo a campo
  4. Trate campos de Repeater e Flexible Content: Para Repeater e Flexible Content, escolha Copy quando o layout e o número de itens devem ser iguais entre idiomas, ou Copy Once quando cada idioma pode ter estrutura própria. Os subcampos de texto dentro deles seguem a própria preferência, então marque-os como Translate.
    Abra o campo Repeater ou Flexible Content no grupo
    Defina o campo pai como Copy (estrutura igual) ou Copy Once (estrutura independente)
    Marque os subcampos de texto internos como Translate
  5. Limpe o cache do WPML e re-traduza: Depois de mudar as preferências, limpe o cache do WPML para que as novas regras valham, reabra a tradução da página no editor e salve. O campo passa a aparecer no editor de tradução com o valor pronto para traduzir.
    Painel WP -> WPML -> Support -> Troubleshooting
    Clique em 'Clear the cache in WPML'
    Reabra a tradução da página no editor de tradução e salve novamente
PHP
<?php
// Define a preferencia de traducao de campos ACF criados via PHP/JSON.
// Valores aceitos pelo ACFML: 'translate', 'copy', 'copy_once', 'nothing'.
add_filter(
    'acfml_field_group_mode_field_translation_preference',
    'full_acf_wpml_field_preference',
    10,
    3
);
function full_acf_wpml_field_preference( $preference, $field, $field_group ) {
    // Campos de texto que precisam ser traduzidos.
    $traduzir = array( 'subtitulo', 'chamada', 'descricao_curta' );
    if ( in_array( $field['name'], $traduzir, true ) ) {
        return 'translate';
    }
    // Campos identicos entre idiomas (ex.: cor, numero, imagem).
    if ( 'cor_destaque' === $field['name'] ) {
        return 'copy';
    }
    return $preference;
}

Perguntas frequentes

Por que o valor do meu custom field do ACF não muda no idioma traduzido
Quase sempre porque a preferência do campo está em Don't translate ou em Copy. Don't translate faz o WPML ignorar o campo e Copy replica o valor do idioma original. Abra o grupo no ACF e mude o campo de texto para Translate para liberar a edição da tradução.
Qual a diferença entre Copy e Copy Once na tradução de fields do ACF
Copy mantém o mesmo valor em todos os idiomas e o atualiza sempre que o original muda. Copy Once copia o valor uma única vez para a tradução e depois libera a edição independente em cada idioma, segundo a documentação do WPML para ACF.
Preciso de qual plugin para traduzir custom fields do ACF com o WPML
Você precisa do ACFML, o Advanced Custom Fields Multilingual, que já vem incluído no WPML e conecta os campos do ACF ao editor de tradução. Sem o ACFML ativo as preferências de tradução dos campos não são aplicadas.
Onde defino se um grupo de campos do ACF é traduzível
Na seção Multilingual Content Setup do próprio grupo de campos, no editor do ACF. Selecione Same fields across languages para o fluxo padrão ou Expert quando precisar de preferências diferentes por campo dentro do mesmo grupo.
Como traduzir os campos de um Repeater ou Flexible Content do ACF
Defina o campo pai Repeater ou Flexible Content como Copy quando a estrutura deve ser igual entre idiomas, ou Copy Once quando cada idioma pode ter layout próprio. Os subcampos de texto seguem a própria preferência, então marque-os como Translate.
Como definir a preferência de tradução para campos do ACF registrados por código
Campos definidos por PHP ou local JSON não têm interface, então use o filtro acfml_field_group_mode_field_translation_preference para fixar a preferência, ou declare a regra de custom-fields no arquivo wpml-config.xml do tema ou plugin.
Mudei a preferência do campo e a tradução continua errada, o que fazer
Limpe o cache do WPML em WPML, Support, Troubleshooting clicando em Clear the cache in WPML. Depois reabra a tradução da página no editor de tradução e salve de novo para o campo assumir a nova preferência.

Seja PRO.

Tenha acesso a snippets de código premium — PHP, JavaScript, CSS e HTML prontos para usar em seus projetos.

Conhecer o plano Pro →

Uma nova era para o WordPress.

A FULL Services redefine o CMS com uma arquitetura modular que transforma o WordPress em um motor de crescimento digital. 

Painéis personalizados

Um novo nível de controle para o WordPress. Acompanhe métricas, automações e evolução do seu site em um único painel visual.

A força por trás de grandes marcas

Para agências, estúdios e profissionais independentes que desejam oferecer soluções de alto nível com sua própria marca.

Componentes

Hero Sections

30 componentes

Seções de CTA

14 componentes

Login

14 componentes

Blog

14 componentes

Cabeçalhos

24 componentes

Seções de FAQ

53 componentes

Cadastro

53 componentes

Blog individual

53 componentes

Rodapés

28 componentes

Seções de contato

27 componentes

Seções de preços

27 componentes

Faixas

27 componentes

Portfólio

16 componentes

Seções de equipe

12 componentes

Números

12 componentes

Logotipos

12 componentes