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

Como corrigir o Flexible Content do ACF PRO que não renderiza no Elementor

Time Full Services Time Full Services
Tipo Page Builders
Nome do erro Flexible Content do ACF PRO não renderiza no Elementor EN: ACF PRO Flexible Content not rendering in Elementor
Severidade Atenção
Descrição O Flexible Content do ACF PRO sai em branco no Elementor porque ele e um campo de loop, não um valor simples: a Dynamic Tag ACF Field do Elementor le campos escalares (texto, imagem, link) e devolve vazio para um campo que so existe dentro de um have_rows. Para renderizar, e preciso iterar os layouts com get_row_layout e get_sub_field.

O que é Flexible Content do ACF PRO que não renderiza no Elementor?

O Flexible Content e um campo do ACF PRO que guarda blocos de conteúdo em layouts repetiveis, cada layout com seus próprios sub campos. Diferente de um campo de texto ou imagem, ele não retorna um único valor: o ACF so entrega os dados dentro de um loop, onde você percorre cada linha com have_rows e the_row, descobre qual layout esta ativo com get_row_layout e le os sub campos com get_sub_field ou the_sub_field. O Elementor Pro injeta dados do ACF no canvas pela Dynamic Tag ACF Field, mas essa tag foi feita para campos escalares simples. Quando você aponta a Dynamic Tag para um campo Flexible Content, o Elementor pede um valor pronto, o ACF não tem valor pronto para entregar (so o loop), e o widget renderiza vazio no editor e no frontend. O problema, portanto, não e bug do Elementor nem do ACF: e incompatibilidade de formato entre um campo de loop e uma tag que espera um escalar.

Como identificar

  • Você aponta a Dynamic Tag ACF Field do Elementor para um campo Flexible Content e o widget fica totalmente em branco no editor e no frontend.
  • Na lista de campos da Dynamic Tag ACF Field, o campo Flexible Content nem aparece, ou aparece mas seleciona-lo não muda nada na previa.
  • Campos de texto e imagem comuns do mesmo grupo ACF renderizam normalmente pela Dynamic Tag, mas o Flexible Content continua vazio.
  • Os layouts do Flexible Content aparecem certos no painel do post (ao editar o conteúdo), porém somem ao tentar exibir pelo Elementor.
  • Ao inspecionar o frontend, o container do widget existe no HTML mas vem sem nenhum dos sub campos dos layouts, como se o campo estivesse vazio.
Antes de começar: Antes de editar o functions.php, faca backup do arquivo e do site; um erro de sintaxe no functions.php derruba o site inteiro com tela branca. Edite por um tema-filho e tenha acesso FTP pronto para reverter.

Como prevenir

  • Use a Dynamic Tag ACF Field do Elementor apenas para campos simples (texto, número, imagem, link) e reserve um shortcode ou template com loop para campos estruturados como Flexible Content, Repeater e Group
  • Documente os nomes dos layouts e dos sub campos do Flexible Content no momento de criar o grupo, para o loop do shortcode referenciar exatamente as mesmas chaves
  • Teste o shortcode num post de exemplo com todos os layouts preenchidos antes de publicar o template do Theme Builder, evitando confundir campo vazio com loop quebrado
  • Mantenha o Elementor Pro com licenca ativa e o ACF PRO atualizado, e padronize o uso do tema-filho para que mudancas no functions.php sobrevivam a atualizações do tema

Causa

  • O Flexible Content e um campo de loop e não retorna valor direto: o ACF so entrega os dados dentro de have_rows e the_row, entao a Dynamic Tag ACF Field do Elementor, que espera um escalar pronto, recebe nada e renderiza vazio.
  • A Dynamic Tag ACF Field do Elementor Pro suporta campos simples (text, number, image, url, true_false), mas não itera Flexible Content, Repeater ou Group, que dependem de get_row_layout e get_sub_field para serem lidos.
  • Tentativa de exibir o Flexible Content fora de um loop: sem percorrer cada linha com the_row e identificar o layout com get_row_layout, os sub campos de cada layout nunca são acessados e nada e impresso.
  • Elementor Pro inativo ou licenca expirada: a Dynamic Tag ACF Field so existe no Elementor Pro, entao no Elementor gratuito nem o campo simples aparece para conteúdo dinamico, quanto mais o Flexible Content.
  • Regra de local do grupo de campos ACF não casa com o post ou template editado no Elementor, fazendo o campo Flexible Content nem existir naquele contexto e qualquer tentativa de exibicao retornar vazio.
  • Edição dentro de um template do Theme Builder cuja Preview aponta para um post sem layouts preenchidos no Flexible Content, dando a impressao de campo vazio mesmo com a lógica de loop correta.

Como resolver

  1. Entenda por que a Dynamic Tag não basta: confirme que o widget esta apontado para um campo Flexible Content e aceite que a Dynamic Tag ACF Field não itera esse tipo de campo. Ela foi feita para campos escalares simples; Flexible Content precisa de um loop. Por isso a solução e renderizar o loop por um shortcode e inserir esse shortcode no Elementor, em vez de usar a Dynamic Tag direto no widget.
    Selecione o widget -> ícone de conteúdo dinâmico -> ACF Field (confirme que aponta para o Flexible Content)
    Remova a Dynamic Tag desse campo de loop; ela ficará sempre vazia
  2. Crie um shortcode que percorra os layouts do Flexible Content: no functions.php do tema-filho, registre um shortcode que rode o loop oficial do ACF com have_rows, the_row e get_row_layout, montando o HTML de cada layout. Use o código de exemplo na seção de código abaixo e troque os nomes de campo e de layout pelos seus. Esse shortcode e o que entrega o conteúdo que a Dynamic Tag não consegue.
    Edite wp-content/themes/seu-tema-filho/functions.php
    Registre o shortcode com add_shortcode (ver bloco de código)
    Troque 'conteúdo_flexivel' e os nomes de layout pelos do seu grupo ACF
  3. Insira o shortcode no Elementor pelo widget Shortcode: arraste o widget Shortcode do Elementor para o ponto da página onde o Flexible Content deve aparecer e cole a tag do shortcode que você registrou. O Elementor executa o shortcode no render, o loop roda e os layouts aparecem. Esse widget existe no Elementor gratuito e no Pro.
    Painel de widgets do Elementor -> Geral -> Shortcode
    [flexible_content]
  4. Garanta o contexto correto do post e da licenca: verifique que o Elementor Pro esta ativo com licenca valida, que a regra de local do grupo ACF inclui o tipo de post editado e que, em templates do Theme Builder, a previa aponta para um post com layouts preenchidos. Sem isso o campo não existe no contexto e o loop, mesmo correto, não tem o que iterar.
    WP Admin -> Plugins -> confirmar Elementor Pro ativado
    WP Admin -> Elementor -> Licença -> status Conectado/Ativo
    WP Admin -> ACF -> Grupos de campos -> Local -> incluir o tipo de post do template
    Editor do template -> Configurações de Pré-visualização -> apontar para post com layouts
  5. Regenere os arquivos e limpe o cache: depois de inserir o shortcode, regenere os arquivos e dados do Elementor e limpe qualquer cache de página, porque o Elementor guarda o CSS e o HTML renderizado e pode estar servindo a versão vazia antiga do widget.
    WP Admin -> Elementor -> Ferramentas -> Regenerar Arquivos e Dados
    Limpe o cache do plugin de cache e do servidor
PHP
// functions.php do tema-filho — renderiza um campo Flexible Content do ACF PRO
// via shortcode, para inserir no widget Shortcode do Elementor.
// Troque 'conteudo_flexivel' pelo nome do seu campo e os nomes de layout/sub campo pelos seus.
add_shortcode( 'flexible_content', function () {
    if ( ! function_exists( 'have_rows' ) ) {
        return ''; // ACF inativo
    }

    ob_start();

    if ( have_rows( 'conteudo_flexivel' ) ) {
        while ( have_rows( 'conteudo_flexivel' ) ) {
            the_row();
            $layout = get_row_layout();

            if ( 'bloco_texto' === $layout ) {
                echo '<div class="fc-texto">';
                echo wp_kses_post( get_sub_field( 'texto' ) );
                echo '</div>';
            } elseif ( 'bloco_imagem' === $layout ) {
                $img = get_sub_field( 'imagem' ); // Return Format = Image URL
                if ( $img ) {
                    echo '<div class="fc-imagem"><img src="' . esc_url( $img ) . '" alt="" /></div>';
                }
            }
        }
    }

    return ob_get_clean();
} );

Perguntas frequentes

Por que a Dynamic Tag ACF Field do Elementor deixa o Flexible Content vazio
Porque o Flexible Content não retorna um valor pronto; ele so entrega dados dentro de um loop com have_rows e the_row. A Dynamic Tag ACF Field espera um campo escalar simples, como texto ou imagem, entao recebe nada de um campo de loop e renderiza vazio. A solução e montar o loop num shortcode e inserir esse shortcode no Elementor.
Da para exibir Flexible Content no Elementor sem escrever código
Com a Dynamic Tag nativa do Elementor, não, porque ela não itera campos de loop. As alternativas sem PHP são addons de loop como JetEngine ou plugins de query, mapeando cada layout num template; mas o caminho oficial e direto e um shortcode que roda o loop do ACF e e inserido pelo widget Shortcode do Elementor.
Preciso do Elementor Pro para isso
Para a Dynamic Tag ACF Field sim, ela e recurso Pro. Mas a solução por shortcode usa o widget Shortcode, que existe também no Elementor gratuito. Ou seja, o loop em PHP via shortcode renderiza o Flexible Content mesmo sem o Pro, desde que o ACF PRO esteja ativo para o campo existir.
O Flexible Content e um campo PRO do ACF
Sim, o Flexible Content e um dos campos exclusivos do ACF PRO, junto com Repeater, Clone, Gallery e Options Page. No ACF gratuito esse tipo de campo não existe, entao o grupo precisa ter sido criado com o ACF PRO ativo para o campo aparecer no post e poder ser iterado.
Qual loop o shortcode precisa rodar para o Flexible Content aparecer
O loop oficial do ACF: have_rows para checar se ha linhas, while com the_row para avancar, get_row_layout para identificar o layout ativo e get_sub_field ou the_sub_field para ler cada sub campo. Cada layout e tratado num if pelo nome retornado por get_row_layout, montando o HTML correspondente.
Meus campos de texto do ACF aparecem no Elementor, mas o Flexible Content não. Por que
Porque texto e imagem são campos escalares e a Dynamic Tag ACF Field os entrega direto. O Flexible Content e um container de layouts que so existe dentro de um loop. Mesmo no mesmo grupo de campos, o comportamento e diferente: o escalar tem valor pronto, o Flexible Content não. Por isso so o loop o exibe.
O Flexible Content some dentro do Theme Builder do Elementor. O que checar
Confira se a Preview do template aponta para um post com layouts preenchidos e se a regra de local do grupo ACF inclui o tipo de post do template. Dentro do Theme Builder a previa pode apontar para um post sem dados, dando impressao de loop quebrado quando na verdade o campo esta vazio para aquele post de previa.
Mudei o shortcode e o widget continua vazio. Falta algo
Reabra o widget Shortcode e confirme a tag exata, depois regenere os arquivos em Elementor -> Ferramentas -> Regenerar Arquivos e Dados e limpe o cache de página. O Elementor guarda o HTML renderizado e pode servir a versão vazia antiga. Confirme também que os nomes de campo e de layout no shortcode batem com os do grupo ACF.

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