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

Como corrigir o conflito de Meta Boxes entre ACF PRO e JetEngine no WordPress

Time Full Services Time Full Services
Tipo Page Builders
Nome do erro Conflito de meta boxes entre ACF PRO e JetEngine EN: ACF PRO and JetEngine meta box conflict
Severidade Atenção
Descrição O conflito de meta boxes entre ACF PRO e JetEngine acontece quando os dois plugins registram grupos de campos para o mesmo tipo de post e gravam na mesma meta key, gerando caixas duplicadas no editor, valores sobrescritos e campos que parecem não salvar.

O que é conflito de Meta Boxes entre ACF PRO e JetEngine?

O conflito de meta boxes entre ACF PRO e JetEngine surge porque os dois plugins fazem a mesma coisa por baixo: registram caixas de campos personalizados (meta boxes) numa tela de edição e guardam o que você digita na tabela wp_postmeta do WordPress. O ACF decide onde mostrar cada grupo de campos por regras de localizacao, formadas por um tipo de localizacao, um operador e um valor, segundo a documentação oficial. O JetEngine, do pacote Crocoblock, tem o próprio módulo de Meta Boxes que faz exatamente o mesmo registro para o mesmo tipo de post.

Quando os dois grupos miram o mesmo post type e, pior, usam o mesmo nome de campo (a mesma meta key), o WordPress passa a ter duas caixas competindo pelo mesmo dado. O editor mostra campos duplicados, o valor salvo por um plugin e lido ou sobrescrito pelo outro, e o usuário tem a impressao de que o campo não salva. O problema não e bug de nenhum dos dois: e dois registradores de meta box gravando no mesmo lugar sem combinarem entre si.

Como identificar

  • Duas caixas de campos aparecem na mesma tela de edição do post, uma do ACF e outra do JetEngine, pedindo a mesma informação.
  • Você preenche o campo no grupo do ACF, salva o post e o valor aparece em branco ou com o conteúdo antigo ao recarregar a tela.
  • O valor digitado na caixa do JetEngine some quando o post e salvo de novo pela caixa do ACF, e vice-versa.
  • Um template do JetEngine (Listing Grid ou Dynamic Field) exibe vazio ou desatualizado mesmo com o campo preenchido no ACF.
  • Mensagem ‘Notice: meta key already registered’ ou avisos de chave duplicada surgem no log quando WP_DEBUG esta ativo.
Antes de começar: Renomear meta keys e remover campos altera dados já salvos em wp_postmeta. Faça backup do banco de dados e dos arquivos, ou teste primeiro em um ambiente de staging, antes de aplicar as mudancas em producao, para poder reverter sem perder conteúdo.

Como prevenir

  • Defina desde o inicio do projeto qual plugin e o dono dos campos personalizados de cada post type, evitando registrar o mesmo campo no ACF e no JetEngine.
  • Padronize um prefixo de meta key por plugin (ex.: acf_ e jet_) para que nunca dois campos diferentes disputem a mesma chave de wp_postmeta.
  • Documente as regras de localizacao do ACF e as condicoes de exibicao do JetEngine para que ninguem ative dois grupos na mesma tela de edição por engano.
  • Ao migrar um campo de um plugin para o outro, remova o registro antigo e renomeie a meta key no mesmo passe, sem deixar dois donos para a mesma chave.

Causa

  • O grupo de campos do ACF e um Meta Box do JetEngine apontam para o mesmo post type pela regra de localizacao do ACF ('Tipo de Post e igual a') e pela condicao equivalente no JetEngine, criando duas caixas na mesma tela.
  • Os dois plugins usam a mesma meta key para campos diferentes: o campo do ACF e o campo do JetEngine gravam na mesma chave de wp_postmeta, entao o último a salvar sobrescreve o valor do outro.
  • O JetEngine esta com a opção 'Save custom fields meta data into a single field' (armazenar em campo único) divergente do esperado pelo ACF, que grava cada campo em uma meta key separada, fazendo a leitura cruzada falhar.
  • Um campo foi migrado do JetEngine para o ACF (ou o contrario) sem renomear a meta key nem remover o registro antigo, deixando dois donos para a mesma chave.
  • Uma regra de localizacao customizada registrada via acf_register_location_type sobrepoe a condicao do JetEngine no mesmo contexto de edição, exibindo os dois grupos juntos quando o esperado era apenas um.

Como resolver

  1. Mapeie quem registra cada campo e a meta key de cada um: Antes de mexer, liste os campos em conflito. Anote a meta key (nome interno) de cada campo no ACF e no JetEngine. Dois campos com a mesma meta key gravando no mesmo post type são a raiz do conflito de meta box.
    Painel WP -> ACF -> Grupos de Campos -> abra o grupo e anote o Nome do Campo de cada item
    Painel WP -> JetEngine -> Meta Boxes -> abra a caixa e anote o Name/Slug de cada campo
    Compare as duas listas e marque toda meta key que aparece nos dois plugins
  2. Defina um único dono para cada campo: Escolha qual plugin será o dono de cada campo em conflito. A regra prática: se o valor alimenta templates do JetEngine, deixe o campo no JetEngine; se alimenta a lógica do tema ou do PHP via get_field, deixe no ACF. Desative no plugin perdedor o campo que você não escolheu como dono.
    No plugin que NÃO será o dono, remova o campo duplicado do grupo/caixa
    Salve o grupo de campos do ACF e o Meta Box do JetEngine após a remoção
  3. Separe as meta keys quando os dois campos precisam coexistir: Se os dois campos são realmente distintos mas caíram na mesma chave, renomeie a meta key de um deles para um valor único. Isso elimina a sobrescrita porque cada plugin passa a gravar em uma chave própria de wp_postmeta.
    Painel WP -> ACF -> abra o campo -> altere o Nome do Campo para um valor exclusivo (ex.: full_preco_acf)
    Painel WP -> JetEngine -> abra o campo -> ajuste o Name para outra chave (ex.: full_preco_jet)
    Atualize os templates e o código do tema para apontar para a meta key correta
  4. Alinhe o formato de armazenamento do JetEngine ao do ACF: Confira no Meta Box do JetEngine se a opção de salvar tudo em um único campo esta condizente com o ACF, que grava cada campo em uma meta key separada. Formatos divergentes fazem a leitura cruzada retornar vazio.
    Painel WP -> JetEngine -> Meta Boxes -> abra a caixa -> Settings
    Verifique a opção 'Save custom fields meta data into a single field' e deixe desligada para gravar uma meta key por campo
    Salve e reedite um post de teste para confirmar que o valor persiste
  5. Restrinja a regra de localizacao para um grupo por tela: Ajuste a regra de localizacao do ACF para que o grupo não apareca na mesma tela em que o JetEngine já entrega a caixa. Use a condicao 'Tipo de Post' e, se preciso, um template de página para isolar cada grupo no contexto certo.
    Painel WP -> ACF -> Grupos de Campos -> abra o grupo -> bloco Localizacao
    Restrinja a regra (ex.: 'Tipo de Post e igual a' apenas onde o ACF deve aparecer)
    Salve e abra a tela de edição para confirmar que so uma caixa por campo aparece
PHP
<?php
// Esconde o grupo de campos do ACF na tela de edicao quando o
// Meta Box do JetEngine for o dono daquele post type, evitando a
// caixa duplicada. Troque 'group_minha_caixa' e 'produto' pelos seus.
add_filter( 'acf/location/rule_match/post_type', 'full_acf_evita_meta_box_duplicado', 20, 3 );
function full_acf_evita_meta_box_duplicado( $match, $rule, $options ) {
    $post_type_jetengine_dono = 'produto';
    if ( isset( $options['post_type'] ) && $options['post_type'] === $post_type_jetengine_dono ) {
        return false; // nao exibe o grupo do ACF nesse post type
    }
    return $match;
}

Perguntas frequentes

Por que aparecem duas caixas de campos no editor com ACF e JetEngine
Porque os dois plugins registram meta boxes para o mesmo tipo de post. O ACF mostra o grupo pela regra de localizacao e o JetEngine mostra a própria caixa pela condicao dele. Quando ambos miram o mesmo post type, o editor exibe as duas caixas juntas.
Meu campo do ACF não salva quando o JetEngine esta ativo
Normalmente os dois campos gravam na mesma meta key e o último a salvar sobrescreve o valor do outro. Renomeie a meta key de um dos campos para um valor exclusivo ou defina um único plugin como dono daquele campo para o valor parar de ser apagado.
O que e uma meta key e por que ela causa o conflito
A meta key e o nome interno sob o qual o WordPress guarda o valor do campo na tabela wp_postmeta. Se o ACF e o JetEngine usam a mesma meta key para campos diferentes, os dois escrevem no mesmo lugar e um sobrescreve o outro a cada salvamento.
Como decidir se mantenho o campo no ACF ou no JetEngine
Mantenha no JetEngine se o valor alimenta templates do Crocoblock como Listing Grid ou Dynamic Field. Mantenha no ACF se o valor e lido pelo tema ou por PHP com get_field. Escolha um dono por campo e remova o duplicado no outro plugin.
Posso usar o mesmo campo nos dois plugins ao mesmo tempo
So funciona de forma confiavel se os dois apontarem para a mesma meta key e o formato de armazenamento for compatível, com o JetEngine gravando uma meta key por campo. Sem esse alinhamento, a leitura cruzada retorna vazio ou desatualizada.
Renomear a meta key apaga os dados que já estavam salvos
Os dados antigos continuam na meta key original e não são movidos sozinhos para o novo nome. Por isso faça backup e, se precisar preservar o histórico, copie os valores da chave antiga para a nova por SQL ou WP-CLI antes de remover a key antiga.
Como uma regra de localizacao do ACF se relaciona com o conflito
A regra de localizacao do ACF e o que decide em qual tela o grupo de campos aparece, formada por tipo de localizacao, operador e valor. Restringir essa regra evita que o grupo do ACF surja na mesma tela em que o JetEngine já entrega a caixa.

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