🎉 USE O CUPOM DESCONTO.FULL | 20% OFF acima de R$ 50,00

Como corrigir o conflito entre Essential Addons e Crocoblock JetEngine

Time Full Services Time Full Services
Tipo Page Builders
Nome do erro Conflito entre Essential Addons e JetEngine EN: Essential Addons and JetEngine conflict
Severidade Grave
Descrição O conflito entre o Essential Addons e o JetEngine aparece quando os dois plugins estendem a mesma camada do Elementor (dynamic tags, listing grid e assets de frontend). O sintoma comum e tela branca no editor, dynamic tags que somem ou um erro fatal de array vindo de um campo JetEngine usado dentro de um widget do Essential Addons.

O que é conflito entre Essential Addons e JetEngine?

O Essential Addons for Elementor e o JetEngine, do pacote Crocoblock, são dois plugins que estendem o mesmo nucleo do Elementor ao mesmo tempo. Ambos registram dynamic tags na classe de DynamicTags do Elementor, ambos oferecem widgets de listagem que rodam consultas (o Post Grid do Essential Addons e o Listing Grid do JetEngine) e ambos enfileiram scripts de frontend que dependem do jQuery, como o eael-general.js. O conflito surge quando essas três camadas se cruzam: um dynamic tag do JetEngine que retorna um array e consumido por um widget do Essential Addons, dois grupos de dynamic tags com o mesmo identificador, ou o script de um plugin executando antes da dependencia do outro carregar.

Como identificar

  • A tela do editor do Elementor abre em branco ou trava no spinner quando a página usa um widget do Essential Addons junto com um campo do JetEngine
  • No frontend aparece a mensagem ‘There has been a critical error on this website’ e o log registra um TypeError do tipo check_string_contains_and_empty ao renderizar um dynamic tag que retorna array
  • As dynamic tags do JetEngine somem da lista do icone de banco de dados dentro dos widgets do Essential Addons, ou o contrario, as tags do Essential Addons não aparecem nos campos do JetEngine
  • O Listing Grid do JetEngine dentro de uma seção com widgets do Essential Addons mostra so o primeiro item repetido ou não filtra, porque as duas consultas competem pelo mesmo loop
  • No console do navegador aparece ‘eael is not defined’ ou um erro de jQuery quando o script do Essential Addons executa antes do frontend do JetEngine inicializar
  • O problema desaparece ao desativar um dos dois plugins e volta ao reativar, confirmando que a falha esta na interacao entre eles e não em cada plugin isolado
Antes de começar: Faca backup do banco e dos arquivos antes de atualizar os dois plugins juntos ou trocar campos de dynamic tag. Atualizar Essential Addons, JetEngine e Elementor na mesma janela pode mudar o comportamento de várias páginas de uma vez, e um backup permite reverter rápido se uma página crítica quebrar.

Como prevenir

  • Atualize Essential Addons, JetEngine e Elementor sempre na mesma janela e teste em ambiente de staging antes de subir para producao, porque o conflito quase sempre nasce de uma versão desencontrada entre os três
  • Use apenas um widget de consulta por loop do Elementor, escolhendo entre o Post Grid do Essential Addons e o Listing Grid do JetEngine, para evitar duas WP_Query competindo no mesmo container
  • Antes de inserir uma dynamic tag do JetEngine dentro de um widget do Essential Addons, confirme se o campo devolve texto e não array, ou aplique um delimitador no próprio JetEngine
  • Mantenha os scripts eael-general.js e o frontend do JetEngine fora das otimizacoes de defer e delay do plugin de cache para garantir a ordem correta de carregamento

Causa

  • Um dynamic tag do JetEngine que devolve um array (campo do tipo Checkbox, Repeater ou true/false) e inserido dentro de um widget do Essential Addons, e o Elementor lanca o TypeError em check_string_contains_and_empty porque a tag entrega um array onde se esperava string.
  • Os dois plugins registram dynamic tags com o mesmo group/category na classe DynamicTags Manager do Elementor, e o grupo registrado por último sobrescreve o do outro, fazendo as tags de um dos plugins sumirem da interface.
  • O Post Grid do Essential Addons e o Listing Grid do JetEngine estão na mesma seção e disparam duas WP_Query concorrentes sobre o mesmo loop, e o segundo widget herda o post atual do primeiro, repetindo o item ou ignorando o filtro.
  • O script eael-general.js do Essential Addons e o script de frontend do JetEngine carregam fora de ordem por causa de uma otimização de cache ou de defer, e o eael executa antes do jQuery ou do objeto do JetEngine existir, gerando 'eael is not defined' no console.
  • Uma versão antiga do Essential Addons ou do JetEngine usa uma assinatura de hook do Elementor que mudou em uma atualização recente do core, e a incompatibilidade de versão quebra o registro do widget ou da tag.
  • Os dois plugins injetam CSS próprio para o mesmo container do Elementor e as regras competem por especificidade, deixando o widget sem estilo ou com layout quebrado so quando ambos estão ativos.

Como resolver

  1. Confirme que a falha vem da interacao entre os dois plugins: Ative o modo de depuração do WordPress, reproduza o erro e leia a última linha do log de debug para descobrir qual classe disparou a falha. Se a stack trace citar o Essential Addons consumindo um valor do JetEngine, ou um TypeError de array em um dynamic tag, o conflito esta na camada compartilhada do Elementor.
    define( 'WP_DEBUG', true );
    define( 'WP_DEBUG_LOG', true );
    wp-content/debug.log
  2. Isole o plugin culpado pela bisseccao: Desative o JetEngine, recarregue a página e o editor, e veja se o erro some. Reative o JetEngine e desative o Essential Addons para o teste inverso. Reproduzir o erro com so um dos dois ativo prova qual camada do conflito esta sendo acionada antes de mexer no conteúdo.
    Plugins -> Plugins instalados -> Essential Addons for Elementor -> Desativar
    Plugins -> Plugins instalados -> JetEngine -> Desativar
  3. Resolva o erro fatal de dynamic tag que retorna array: Se a stack trace apontar um TypeError de array, abra o widget do Essential Addons que consome a dynamic tag do JetEngine e troque o campo array por um campo que devolva texto, ou use o seletor de delimitador do próprio JetEngine para entregar o valor como string separada por virgula. Isso elimina o array que o widget não sabe tratar.
    Elementor -> widget Essential Addons -> icone de banco de dados -> trocar a Dynamic Tag do campo array
    JetEngine -> campo Checkbox/Repeater -> Save Custom Meta -> Delimiter
  4. Separe os widgets de consulta concorrentes: Se o Listing Grid do JetEngine e o Post Grid do Essential Addons estão na mesma seção mostrando os itens errados, mantenha so um widget de consulta por loop. Mova o widget do outro plugin para fora do container de query ou use uma seção independente, para que cada consulta tenha o próprio loop e não herde o post do widget vizinho.
    Elementor -> navegador de estrutura -> mover o widget de listagem para uma seção própria
  5. Atualize os dois plugins e o Elementor e limpe o cache: Va em Plugins, atualize o Essential Addons, o JetEngine e o Elementor para as versões mais recentes na mesma janela, e depois limpe o cache do site e o CSS gerado pelo Elementor. Muitos conflitos de assinatura de hook e de ordem de script já foram corrigidos nas versões novas, e o CSS antigo guarda regras de um dos plugins que já mudaram.
    Plugins -> Plugins instalados -> Atualizar Essential Addons, JetEngine e Elementor
    Elementor -> Ferramentas -> Regenerar CSS e dados
  6. Se persistir, ajuste a ordem de carregamento dos scripts: Caso o console mostre 'eael is not defined' ou erro de jQuery, exclua o eael-general.js e o script de frontend do JetEngine de qualquer otimização de defer, delay ou combine no plugin de cache, para que o jQuery e os objetos dos dois plugins existam antes dos widgets executarem.
    /essential-addons-elementor/assets/front-end/js/view/general.min.js
    /jet-engine/assets/js/frontend.js
PHP
// wp-config.php — liga o log de debug para ler a stack trace do conflito
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );

// O TypeError aparece em wp-content/debug.log com uma linha parecida com:
// PHP Fatal error: Uncaught TypeError: ...check_string_contains_and_empty():
// Argument must be of type string, array given, called in
// .../essential-addons-elementor/... ao renderizar uma Dynamic Tag do JetEngine

Perguntas frequentes

Por que o editor do Elementor abre em branco so quando uso Essential Addons e JetEngine juntos?
Os dois plugins registram extensões na mesma camada do Elementor, como dynamic tags e widgets de consulta. Quando um dynamic tag do JetEngine entrega um array para um widget do Essential Addons, o Elementor pode falhar ao montar a tela e abrir o editor em branco. Desativar um dos dois confirma a origem do conflito.
O que significa o erro de TypeError em check_string_contains_and_empty?
Esse erro fatal aparece quando um dynamic tag que retorna um array, como um campo Checkbox ou Repeater do JetEngine, e usado em um lugar onde o Elementor espera texto. O nucleo tenta tratar o array como string e lanca o TypeError. Trocar o campo por um que devolva texto ou aplicar um delimitador resolve.
Preciso desativar o Essential Addons ou o JetEngine de vez para o conflito sumir?
Não na maioria dos casos. O conflito costuma estar em um ponto específico, como uma dynamic tag de array ou dois widgets de consulta na mesma seção. Identificar e corrigir esse ponto permite manter os dois plugins ativos, que e o cenario normal de quem usa o pacote Crocoblock com Essential Addons.
Por que as dynamic tags de um dos plugins desaparecem da lista do Elementor?
Quando os dois plugins registram grupos de dynamic tags com o mesmo identificador, o que carrega por último sobrescreve o grupo do outro, e as tags somem da interface. Atualizar os dois plugins para as versões novas, onde os identificadores foram separados, costuma trazer as tags de volta.
O Listing Grid do JetEngine mostra so o primeiro item ao lado de um widget do Essential Addons, como resolver?
Isso acontece porque o Post Grid do Essential Addons e o Listing Grid do JetEngine disparam consultas concorrentes no mesmo loop, e o segundo widget herda o post do primeiro. Mantenha so um widget de consulta por seção ou mova um deles para um container separado para que cada consulta tenha o próprio loop.
Atualizar os plugins resolve o conflito entre Essential Addons e JetEngine?
Em muitos casos sim. Boa parte dos conflitos vem de uma assinatura de hook do Elementor que mudou e de ordem de script. Atualizar Essential Addons, JetEngine e Elementor na mesma janela e regenerar o CSS do Elementor corrige os conflitos já resolvidos pelos desenvolvedores. Sempre teste em staging primeiro.
O erro eael is not defined no console tem a ver com o JetEngine?
Tem quando uma otimização de cache muda a ordem dos scripts. Se o eael-general.js executa antes do jQuery ou antes do frontend do JetEngine inicializar, o objeto eael não existe e o console mostra o erro. Excluir os dois scripts do defer e do delay do plugin de cache acerta a ordem de carregamento.
Posso usar Essential Addons e Crocoblock no mesmo site sem conflito?
Pode, e e um cenario comum. O segredo e não sobrepor as funções que se cruzam: evite duas consultas no mesmo loop, confirme o tipo de retorno das dynamic tags e mantenha os três plugins atualizados. Quando cada plugin atua na sua área, Essential Addons e JetEngine convivem bem.

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