Como corrigir o WYSIWYG Editor que não carrega no ACF PRO
O que é WYSIWYG Editor do ACF PRO que não carrega?
O campo WYSIWYG do ACF PRO recria o editor de conteúdo do WordPress (o TinyMCE, o mesmo de Posts e Páginas) dentro de um grupo de campos. Segundo a documentação oficial, ele oferece os modos Visual e Texto (configuraveis em Tabs), a barra Full ou Basic (em Toolbar), os botões de upload de mídia (Show Media Upload Buttons) e a opção Delay initialization, que adia o carregamento do editor até o campo ser clicado para acelerar a página. Quando algo nessa cadeia falha, o editor não carrega: a área do campo fica em branco, sem a barra de ferramentas, ou exibe apenas a caixa de texto puro sem o modo Visual.
O problema concentra-se nos campos WYSIWYG adicionados depois que a página já carregou, dentro de um Repeater ou de um Flexible Content. O TinyMCE precisa ser inicializado via JavaScript no momento em que a linha e criada; se esse gatilho falha por um erro de JavaScript de outro plugin, por scripts do admin não enfileirados ou pela opção Delay initialization mal interpretada, a nova instancia do editor nasce vazia. Em telas no frontend (formulários com acf_form), o editor também depende de carregar os scripts do admin do WordPress, que normalmente não estão presentes fora do painel.
Como identificar
- Ao adicionar uma nova linha em um Repeater ou Flexible Content, o campo WYSIWYG aparece como uma caixa em branco, sem a barra de ferramentas e sem o conteúdo digitado.
- O editor mostra apenas o modo Texto (HTML puro) e o botão ‘Visual’ não alterna para o editor formatado.
- No console do navegador surge um erro de JavaScript como ‘tinymce is not defined’ ou ‘wpActiveEditor’ ao abrir ou expandir o campo.
- O campo WYSIWYG carrega normalmente na primeira linha do Repeater, mas falha em todas as linhas adicionadas depois sem recarregar a página.
- Em um formulário de frontend criado com acf_form, o WYSIWYG aparece sem barra de ferramentas e os botões de upload de mídia não funcionam.
Como prevenir
- Evite ativar a opção ‘Delay initialization?’ em campos WYSIWYG dentro de Repeater e Flexible Content, onde a reinicializacao do editor em linhas dinâmicas e mais sensivel.
- Mantenha o ACF PRO e o WordPress sempre atualizados para que as correcoes de inicializacao do TinyMCE em campos dinâmicos cheguem ao seu site.
- Ao usar plugins de cache, exclua os scripts do editor (tinymce) e do ACF da minificacao e do defer para preservar a ordem de carregamento.
- Em formulários de frontend com acf_form, padronize a chamada de acf_form_head e de wp_enqueue_editor no template para garantir os scripts do editor.
Causa
- O campo WYSIWYG esta dentro de um Repeater ou Flexible Content e a nova linha foi adicionada via AJAX depois do carregamento da página: o TinyMCE não e reinicializado na linha recem-criada e o editor nasce em branco.
- A opção 'Delay initialization?' do campo esta ativa, adiando o carregamento do TinyMCE até o clique; quando outro script intercepta esse clique, a inicializacao nunca dispara e o editor fica vazio.
- Um erro de JavaScript de outro plugin ou do tema interrompe a fila de scripts do admin antes do ACF chamar acf.do_action('append'), impedindo a inicializacao do editor nas linhas dinâmicas.
- O WYSIWYG esta em um formulário de frontend gerado por acf_form e os scripts do editor do WordPress (wp_enqueue_editor) não foram enfileirados naquela página, entao o TinyMCE nunca e carregado fora do painel.
- Um plugin de cache ou de otimização concatenou ou adiou (defer) os scripts do TinyMCE e do ACF, quebrando a ordem de carregamento necessaria para o editor inicializar.
Como resolver
- Confirme se o problema e so nas linhas dinâmicas: Edite um post com o grupo de campos e observe: se a primeira linha do Repeater carrega o editor mas as linhas adicionadas depois ficam em branco, o problema e a reinicializacao do TinyMCE nas linhas novas, não o campo em si. Esse teste isola a causa antes de mexer em código.
Painel WP -> edite um post com o grupo de campos ACF Adicione uma nova linha no Repeater e clique no campo WYSIWYG Abra o console do navegador (F12 -> Console) e verifique se aparece 'tinymce is not defined' - Desative a opção Delay initialization do campo: Na documentação oficial, a opção 'Delay initialization?' adia o carregamento do editor até o clique. Se ela estiver ativa e o editor não reagir ao clique, desligue-a para que o TinyMCE carregue junto com a página e elimine a dependencia do gatilho de clique.
Painel WP -> ACF -> Grupos de Campos -> abra o grupo Abra o campo WYSIWYG e localize a opção 'Delay initialization?' Desmarque a opção e salve o grupo de campos - Isole o conflito de JavaScript no editor: Um erro de JavaScript de outro plugin ou tema interrompe a fila de scripts do admin antes do ACF reinicializar o editor. Desative os demais plugins um a um e troque para um tema padrão, recarregando o editor a cada teste para achar o culpado, e reative depois de identifica-lo.
Painel WP -> Plugins -> desative os demais plugins um a um Painel WP -> Aparencia -> Temas -> ative um tema padrão (ex.: Twenty Twenty-Four) Adicione uma linha no Repeater e confira o console a cada teste - Limpe o cache e desligue a otimização de scripts: Plugins de cache que concatenam ou adiam (defer) JavaScript podem quebrar a ordem de carregamento do TinyMCE e do ACF. Limpe o cache e exclua os scripts do editor e do ACF da minificacao e do defer para restaurar a inicializacao.
Painel WP -> plugin de cache -> Limpar todo o cache Exclua da minificacao/defer os handles do TinyMCE e do ACF (tinymce, acf-input) Recarregue o editor e teste novamente - Carregue os scripts do editor em formulários de frontend: Se o WYSIWYG esta em um formulário gerado por acf_form, os scripts do editor do WordPress precisam ser enfileirados na página antes do formulário. Chame wp_enqueue_editor e acf_form_head no template para que o TinyMCE carregue fora do painel.
No template, antes do get_header(): acf_form_head(); Garanta a chamada de wp_enqueue_editor() na página do formulário Recarregue a página do frontend e confira a barra de ferramentas do WYSIWYG
// Reinicializa o editor WYSIWYG do ACF em linhas/blocos adicionados depois do load.
( function( $ ) {
if ( typeof acf === 'undefined' ) {
return;
}
acf.add_action( 'append', function( $el ) {
$el.find( '.acf-field-wysiwyg .wp-editor-area' ).each( function() {
var id = $( this ).attr( 'id' );
if ( id && typeof tinymce !== 'undefined' && ! tinymce.get( id ) ) {
tinymce.execCommand( 'mceAddEditor', false, id );
}
} );
} );
} )( jQuery );














