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

Como corrigir a lentidão do ACF PRO com muitos Custom Fields

Time Full Services Time Full Services
Tipo Performance & Velocidade
Nome do erro Lentidão do ACF PRO com muitos Custom Fields EN: ACF PRO slow with many Custom Fields
Severidade Atenção
Descrição A lentidão de performance do ACF PRO surge quando o site acumula muitos custom fields e field groups grandes: cada tela de edição dispara dezenas de queries na postmeta e lê as definições dos grupos no banco, travando o painel. As correções são ativar o Local JSON, quebrar grupos grandes e desligar o autoload de Options Pages.

O que é a lentidão de performance do ACF PRO?

O ACF PRO guarda cada custom field como uma linha na tabela postmeta e guarda a definição de cada field group em registros do tipo acf-field-group no banco. Quando o site tem muitos grupos e dezenas de campos por tela, abrir um post no editor obriga o ACF a ler as definições de todos os grupos aplicáveis e a buscar o valor de cada campo, gerando dezenas ou centenas de queries por carregamento. Conforme a documentação oficial, quanto mais dados e mais complexos os field groups, mais recursos o servidor precisa para processá-los. O resultado é um wp-admin lento ao editar posts, ao salvar e ao abrir as telas de Options Page.

Como identificar

  • A tela de edição de post ou de Options Page demora vários segundos para terminar de carregar, com a barrinha do navegador travada no final.
  • O Query Monitor mostra centenas de queries SELECT na tabela wp_postmeta vindas das funções get_field e get_fields do ACF a cada carregamento.
  • Salvar um post com muitos campos demora ou retorna a mensagem ‘Maximum execution time exceeded’ quando há Repeater ou Flexible Content extensos.
  • Páginas do site que renderizam muitos campos via the_field ficam lentas e o TTFB no PageSpeed sobe junto com o número de field groups.
Antes de começar: Faça backup do banco e do tema antes de mexer nos field groups ou no autoload, e teste em staging. Ao migrar grupos para o Local JSON, exporte tudo antes: regras de localização mal ajustadas podem esconder campos com dados já preenchidos no site no ar.

Como prevenir

  • Mantenha o Local JSON ligado desde o início do projeto e versione a pasta acf-json no Git junto com o tema.
  • Crie field groups pequenos e com regras de localização específicas, em vez de um único grupo catch-all para o site inteiro.
  • Use Autoload Options apenas para valores lidos em toda página, e monitore o tempo das telas com o Query Monitor após cada novo field group.

Causa

  • Field groups grandes do tipo catch-all, com dezenas de campos numa única tela, que o ACF precisa ler e processar inteiros a cada carregamento do editor.
  • Field groups e post types armazenados no banco em vez do Local JSON, fazendo o ACF consultar a definição de cada grupo no banco em toda requisição.
  • Options Pages com a opção Autoload Options ligada para valores raramente usados, inflando o autoload da tabela wp_options carregado em toda página.
  • Repeater e Flexible Content com centenas de linhas renderizadas de uma vez, sem a paginação de Repeater, sobrecarregando o navegador e o PHP.
  • Uso de get_field dentro de loops grandes sem cache de objeto persistente (Redis ou Memcached), repetindo a mesma leitura na tabela postmeta a cada iteração.

Como resolver

  1. Meça as queries do ACF com o Query Monitor: instale o Query Monitor e abra a tela lenta (edição de post ou Options Page). Filtre as queries pela origem ACF e confirme se o gargalo são leituras na tabela postmeta ou na carga das definições de field group, para atacar a causa certa.
    wp plugin install query-monitor --activate
  2. Ative o Local JSON do ACF PRO: crie a pasta de Local JSON dentro do tema. A partir daí, o ACF lê as definições de field group de arquivos estáticos em vez do banco, reduzindo as consultas em toda requisição, conforme a documentação oficial. Crie a pasta com a permissão correta.
    mkdir wp-content/themes/seu-tema-filho/acf-json
    chmod 0755 wp-content/themes/seu-tema-filho/acf-json
  3. Quebre os field groups catch-all em grupos menores: divida cada grupo gigante em grupos menores com propósito específico e regras de localização restritas ao tipo de post certo. Assim, cada tela carrega apenas os campos que usa, e não a base inteira de campos do site.
  4. Desligue o Autoload das Options Pages pouco usadas: na configuração da Options Page, deixe o Autoload Options desligado para valores que não são lidos em todas as páginas. Segundo a documentação, o autoload só compensa para valores acessados com muita frequência, como os de cabeçalho e rodapé.
    SELECT SUM(LENGTH(option_value)) AS autoload_bytes FROM wp_options WHERE autoload = 'yes';
  5. Pagine Repeaters longos e ative o cache de objeto: ligue a configuração de paginação nos Repeater Fields com muitas linhas para renderizar menos linhas por vez. Em paralelo, habilite um cache de objeto persistente (Redis ou Memcached) para o ACF não repetir as mesmas leituras de postmeta a cada uso de get_field no loop.
PHP
// functions.php do tema filho — Local JSON do ACF PRO
// Salva e carrega as definicoes de field group de arquivos estaticos
// na pasta acf-json do tema, reduzindo queries no banco a cada carregamento.
add_filter( 'acf/settings/save_json', function ( $path ) {
    return get_stylesheet_directory() . '/acf-json';
} );

add_filter( 'acf/settings/load_json', function ( $paths ) {
    unset( $paths[0] );
    $paths[] = get_stylesheet_directory() . '/acf-json';
    return $paths;
} );

Perguntas frequentes

Por que muitos custom fields deixam o ACF PRO lento
Cada custom field vira uma linha na tabela postmeta, e cada field group tem sua definição lida no carregamento. Com muitos grupos e campos, abrir o editor dispara dezenas ou centenas de queries. A documentação oficial confirma que mais dados e grupos mais complexos exigem mais recursos do servidor.
O Local JSON do ACF PRO melhora mesmo a performance
Sim. Com o Local JSON ativo, o ACF carrega as definições de field group de arquivos estáticos no tema em vez de consultar o banco. Isso reduz o número de queries em cada carregamento de página, e a própria documentação o aponta como uma das formas mais eficazes de acelerar o plugin.
Devo ligar o Autoload Options nas Options Pages do ACF
Só para valores lidos com frequência, como os de cabeçalho e rodapé. Para valores raramente usados, deixe o autoload desligado: ligá-lo infla a parte da tabela wp_options carregada em toda requisição e atrasa o site inteiro sem necessidade.
Repeater e Flexible Content grandes pioram a performance
Pioram. Centenas de linhas renderizadas de uma vez pesam no navegador e no PHP e podem estourar o tempo de execução. Ative a paginação de Repeater para mostrar menos linhas por vez. A documentação avisa que essa paginação não está disponível em Repeaters aninhados nem em Flexible Content.
Como descubro quais queries do ACF estão lentas
Instale o Query Monitor e abra a tela lenta. Ele lista todas as queries, o tempo de cada uma e a origem. Filtre pelas chamadas do ACF e veja se o gargalo são leituras na postmeta ou a carga das definições de field group, para atacar a causa certa.
Quebrar um field group grande em vários ajuda
Ajuda bastante. Um grupo catch-all obriga o ACF a processar todos os campos em toda tela. Dividindo em grupos menores com regras de localização específicas, cada tela carrega só os campos que realmente usa, reduzindo o processamento e as queries por carregamento.
Cache de objeto persistente faz diferença no ACF
Faz. Sem cache de objeto, o get_field usado dentro de loops grandes repete a mesma leitura na postmeta a cada iteração. Com Redis ou Memcached, o resultado fica em memória e as leituras repetidas deixam de tocar o banco, aliviando as páginas com muitos campos.

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