Como corrigir o WYSIWYG Field do ACF PRO quando o editor não carrega no WordPress
O que é WYSIWYG Field do ACF PRO que não carrega?
O WYSIWYG Field do ACF PRO entrega um editor de conteúdo do WordPress dentro de um grupo de campos, o mesmo editor TinyMCE visto em Posts e Páginas, com os modos Visual e Texto, a barra de ferramentas Full ou Basic e os botões de upload de mídia. Segundo a documentação oficial do ACF, o valor salvo passa pelo filtro acf_the_content, que aplica a formatação de HTML como o the_content faz, mas sem o risco de recursão. Quando o campo funciona, você vê a área de edição rica com a barra de botões; quando ele falha, no lugar do editor aparece uma caixa de texto crua, em branco ou só com o HTML sem formatação.
O problema acontece porque o editor TinyMCE depende de JavaScript para ser montado na hora certa. A configuração Delay initialization do próprio campo adia a montagem até o clique. Em campos dentro de Repeater ou Flexible Content, cada linha nova é adicionada por AJAX e o editor precisa ser reanexado pela ação append da API JavaScript do ACF. Se esse ciclo é interrompido, por um conflito de script, uma versão defasada do ACF ou a opção de adiar ligada, o editor simplesmente não aparece para o usuário.
Como identificar
- No lugar do editor rico aparece apenas uma caixa de texto vazia, ou um textarea cru sem a barra de ferramentas, ao abrir o campo WYSIWYG no editor de post.
- A barra de botões (negrito, itálico, links, mídia) some e o campo fica como uma área de texto simples, sem os modos Visual e Texto.
- Dentro de um Repeater ou Flexible Content, ao clicar em ‘Adicionar linha’ a nova linha mostra o WYSIWYG em branco enquanto a primeira linha carregou normalmente.
- O console do navegador (F12) exibe erros de JavaScript como ‘tinymce is not defined’ ou ‘Cannot read properties of undefined’ logo ao abrir a tela de edição.
- O campo só renderiza o editor depois que você clica sobre ele, em vez de já aparecer pronto ao carregar a página.
Como prevenir
- Mantenha o ACF PRO e o WordPress sempre na versão estável mais recente, validando antes em staging para acompanhar mudanças do editor TinyMCE.
- Use ‘Delay initialization?’ apenas em telas com muitos campos WYSIWYG e por motivo de performance, sabendo que ela deixa o editor em branco até o clique.
- Ao colocar WYSIWYG dentro de Repeater ou Flexible Content, padronize o uso da ação ‘append’ da API JavaScript do ACF para reanexar o editor nas linhas novas.
- Documente as configurações de Tabs e Toolbar dos campos WYSIWYG para que um ajuste não deixe o campo em ‘Text Only’ sem querer.
Causa
- A opção 'Delay initialization?' do campo está ligada: segundo a doc do ACF ela adia a montagem do editor até o campo ser clicado, então o WYSIWYG aparece vazio até o usuário interagir com ele.
- O campo WYSIWYG está dentro de um Repeater ou Flexible Content e a linha nova é adicionada por AJAX sem reanexar o editor, porque a ação 'append' da API JavaScript do ACF não foi disparada para reinicializar o TinyMCE na nova linha.
- Um conflito de JavaScript com outro plugin ou tema interrompe o carregamento antes do ACF rodar, deixando 'tinymce is not defined' no console e impedindo a montagem do editor.
- A configuração 'Tabs' do campo está em 'Text Only', o que esconde o modo Visual e exibe só a caixa de texto pura, sem a barra de ferramentas rica que o usuário espera.
- A versão do ACF PRO está defasada e não acompanha mudanças do editor do WordPress, fazendo o script de inicialização do TinyMCE falhar no campo.
Como resolver
- Desligue a opção Delay initialization do campo: Abra o grupo de campos em ACF e edite o campo WYSIWYG. Localize a configuração 'Delay initialization?' e desligue-a. Com ela ligada, a doc do ACF confirma que o editor só é montado quando o campo é clicado, então o WYSIWYG aparece em branco ao carregar a tela.
Painel WP -> ACF -> Grupos de Campos -> abra o grupo Edite o campo do tipo WYSIWYG Editor Em 'Delay initialization?' selecione Não (desligado) e salve o grupo - Confirme as configurações Tabs e Toolbar do campo: No mesmo campo, verifique a configuração 'Tabs'. Se estiver em 'Text Only', o modo Visual fica oculto e o usuário vê só a caixa de texto. Selecione 'Visual & Text' e escolha uma 'Toolbar' (Full ou Basic) para restaurar a barra de ferramentas rica.
Painel WP -> ACF -> Grupos de Campos -> edite o campo WYSIWYG Em 'Tabs' selecione 'Visual & Text' Em 'Toolbar' selecione 'Full' (editor completo) e salve - Atualize o ACF PRO e o WordPress: Garanta o ACF PRO e o WordPress nas versões estáveis mais recentes. O WYSIWYG monta o editor TinyMCE do núcleo do WordPress, então um ACF defasado pode falhar ao inicializar o editor após uma atualização do WordPress.
Painel WP -> Plugins -> verifique a versão do Advanced Custom Fields PRO e atualize Painel WP -> Painel -> Atualizações -> atualize o WordPress - Isole o conflito de JavaScript no console: Abra a tela de edição com o console do navegador aberto. Se aparecer um erro como 'tinymce is not defined', desative os demais plugins um a um e troque para um tema padrão, recarregando a cada teste, até identificar o que interrompe o carregamento antes do ACF inicializar o editor.
Abra o post em edição e pressione F12 -> aba Console Painel WP -> Plugins -> desative os demais plugins um a um Painel WP -> Aparência -> Temas -> ative um tema padrão (ex.: Twenty Twenty-Four) e recarregue a cada teste - Reanexe o editor em linhas de Repeater ou Flexible Content: Se o WYSIWYG só falha nas linhas adicionadas por AJAX dentro de um Repeater ou Flexible Content, use a ação 'append' da API JavaScript do ACF para reinicializar o editor na linha nova, conforme o exemplo de código abaixo. A ação dispara quando novo HTML entra na página.
Adicione o script com acf.addAction('append', ...) ao admin (ver bloco de código) Recarregue a tela de edição e clique em 'Adicionar linha' para validar
<?php
add_action( 'acf/input/admin_footer', 'full_reinit_acf_wysiwyg_on_append' );
function full_reinit_acf_wysiwyg_on_append() {
?>
<script>
// Reanexa o editor TinyMCE quando uma linha nova de
// Repeater ou Flexible Content e adicionada via AJAX.
( function() {
if ( typeof acf === 'undefined' ) {
return;
}
acf.addAction( 'append', function( $el ) {
$el.find( '.acf-field-wysiwyg' ).each( function() {
var field = acf.getField( jQuery( this ) );
if ( field && typeof field.initializeEditor === 'function' ) {
field.initializeEditor();
}
} );
} );
} )();
</script>
<?php
}














