Como corrigir o conflito entre Essential Addons e Crocoblock JetEngine
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
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
- 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 - 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 - 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 - 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 - 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 - 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
// 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














