---
title: "Como corrigir o loop infinito no Repeater Field do ACF PRO"
url: https://full.services/wp-fixer/corrigir-repeater-loop-infinito-acf-pro/
date: 2026-06-17
author: "Clayton Margiotti"
---

# Como corrigir o loop infinito no Repeater Field do ACF PRO

## O que é o ACF Repeater loop infinito?

O loop infinito no Repeater Field do ACF PRO é quando um template percorre as linhas do campo Repeater com have_rows sem avançar o ponteiro interno de linha, e o laço nunca termina. A função have_rows apenas verifica se há linhas e devolve verdadeiro ou falso. Quem move o ponteiro para a próxima linha é a função the_row, chamada dentro do while. Sem the_row, a condição continua verdadeira para sempre e o PHP reexecuta a mesma linha até o servidor cortar a requisição por tempo de execução ou por memória.

## Como identificar

- A página com o Repeater fica carregando e nunca termina, e depois cai com Maximum execution time of 30 seconds exceeded.

- O log de erros do PHP registra Allowed memory size of X bytes exhausted na linha do template que tem o while have_rows.

- O mesmo conteúdo de uma única linha do Repeater aparece repetido centenas de vezes antes de a página travar.

- Em Repeater aninhado, o laço interno reusa o nome do campo do laço externo e o segundo nível nunca avança.

**Antes de começar:** Faça backup do arquivo do tema ou do template antes de editar o laço, e teste a correção em ambiente de staging. Um while have_rows mal fechado em produção pode derrubar a página inteira e estourar os recursos do servidor.

## Como prevenir

- Copie sempre o padrão have_rows, while, the_row, get_sub_field da documentação do ACF em vez de escrever o laço de memória.

- Em Repeater aninhado, nomeie os sub campos de forma distinta do campo pai para nunca confundir os ponteiros.

- Quando o Repeater roda em listagens, feche cada iteração com reset_rows e teste a página com muitos itens em staging antes de publicar.

Erros relacionados

- [Como corrigir o erro de loop em Repeater aninhado no ACF PRO](https://full.services/wp-fixer/corrigir-repeater-aninhado-loop-acf-pro/)

- [Como corrigir o Repeater Field que não salva dados no ACF PRO](https://full.services/wp-fixer/corrigir-repeater-nao-salva-acf-pro/)

- [Como corrigir Maximum Execution Time Exceeded](https://full.services/wp-fixer/corrigir-maximum-execution-time-wordpress/)


---

## Metadados Estruturados (Schema.org)

```json-ld
{
    "@context": "https://schema.org",
    "@graph": [
        {
            "@type": "Organization",
            "@id": "https://full.services/#org",
            "name": "FULL Services",
            "url": "https://full.services/",
            "sameAs": [
                "https://www.instagram.com/fullservicesbr",
                "https://www.facebook.com/fullservices.br",
                "https://www.linkedin.com/company/fullservicesbr/"
            ],
            "knowsAbout": [
                "WordPress",
                "WordPress Hosting",
                "Web Development",
                "Performance Optimization",
                "WordPress Security",
                "SEO para WordPress"
            ],
            "award": [
                "Gold Medal - The WP Weekly Awards 2023",
                "Gold Medal - The WP Weekly Awards 2024"
            ],
            "logo": {
                "@type": "ImageObject",
                "url": "https://full.services/wp-content/uploads/full-services-logo.png",
                "width": 200,
                "height": 60
            },
            "hasCredential": {
                "@type": "EducationalOccupationalCredential",
                "credentialCategory": "certification",
                "name": "CVE Numbering Authority (CNA)",
                "description": "Autoridade de numeração de vulnerabilidades (CVE) para o ecossistema WordPress, autorizada a atribuir IDs CVE. Válida desde 2022-05-03, com abrangência global.",
                "url": "https://www.cve.org/PartnerInformation/ListofPartners/partner/FULL",
                "recognizedBy": {
                    "@type": "Organization",
                    "name": "CISA — Cybersecurity and Infrastructure Security Agency",
                    "url": "https://www.cisa.gov/",
                    "sameAs": "https://www.cisa.gov/"
                }
            }
        },
        {
            "@type": "TechArticle",
            "@id": "https://full.services/wp-fixer/corrigir-repeater-loop-infinito-acf-pro/#article",
            "headline": "Como corrigir o loop infinito no Repeater Field do ACF PRO",
            "url": "https://full.services/wp-fixer/corrigir-repeater-loop-infinito-acf-pro/",
            "inLanguage": "pt-BR",
            "datePublished": "2026-06-17T12:39:08-03:00",
            "dateModified": "2026-06-17T12:39:29-03:00",
            "author": {
                "@id": "https://full.services/#org"
            },
            "publisher": {
                "@id": "https://full.services/#org"
            },
            "isAccessibleForFree": false,
            "about": [
                {
                    "@type": "Thing",
                    "@id": "https://www.wikidata.org/wiki/Q13166",
                    "name": "WordPress",
                    "sameAs": "https://www.wikidata.org/wiki/Q13166",
                    "url": "https://wordpress.org/"
                },
                {
                    "@type": "Thing",
                    "name": "Page Builders"
                }
            ],
            "mentions": {
                "@type": "Thing",
                "@id": "https://www.wikidata.org/wiki/Q13166",
                "name": "WordPress",
                "sameAs": "https://www.wikidata.org/wiki/Q13166",
                "url": "https://wordpress.org/"
            },
            "mainEntityOfPage": {
                "@type": "WebPage",
                "@id": "https://full.services/wp-fixer/corrigir-repeater-loop-infinito-acf-pro/"
            },
            "wordCount": 749,
            "description": "O ACF Repeater loop infinito acontece quando o while de have_rows roda sem chamar the_row dentro dele: o ponteiro interno de linha nunca avança, a condição fica sempre verdadeira e o PHP repete a mesma linha até estourar Maximum Execution Time ou a memória.",
            "articleSection": "Page Builders",
            "keywords": "acf repeater loop infinito, have_rows loop infinito acf, repeater aninhado acf pro loop, the_row repeater acf pro",
            "proficiencyLevel": "Advanced",
            "citation": {
                "@type": "CreativeWork",
                "url": "https://www.advancedcustomfields.com/resources/have_rows/",
                "name": "ACF — have_rows() (documentação oficial)"
            },
            "mainEntity": {
                "@type": "SoftwareSourceCode",
                "name": "Como corrigir o loop infinito no Repeater Field do ACF PRO",
                "programmingLanguage": "PHP",
                "codeRepository": "https://full.services/wp-fixer/corrigir-repeater-loop-infinito-acf-pro/",
                "isAccessibleForFree": false
            }
        },
        {
            "@type": "FAQPage",
            "@id": "https://full.services/wp-fixer/corrigir-repeater-loop-infinito-acf-pro/#faq",
            "isPartOf": {
                "@id": "https://full.services/wp-fixer/corrigir-repeater-loop-infinito-acf-pro/#article"
            },
            "isAccessibleForFree": true,
            "mainEntity": [
                {
                    "@type": "Question",
                    "@id": "https://full.services/wp-fixer/corrigir-repeater-loop-infinito-acf-pro/#faq-q1",
                    "name": "O que causa o loop infinito no Repeater do ACF PRO?",
                    "inLanguage": "pt-BR",
                    "acceptedAnswer": {
                        "@type": "Answer",
                        "text": "Na maioria dos casos é a falta da função the_row dentro do while have_rows. A documentação do ACF é clara: have_rows só verifica se há linhas, e quem avança o ponteiro para a próxima é the_row. Sem ela, a condição fica sempre verdadeira e o laço nunca termina.",
                        "author": {
                            "@id": "https://full.services/#org"
                        }
                    }
                },
                {
                    "@type": "Question",
                    "@id": "https://full.services/wp-fixer/corrigir-repeater-loop-infinito-acf-pro/#faq-q2",
                    "name": "Por que a página cai com Maximum execution time?",
                    "inLanguage": "pt-BR",
                    "acceptedAnswer": {
                        "@type": "Answer",
                        "text": "O laço sem fim reexecuta a mesma linha do Repeater indefinidamente e consome todo o tempo de processamento da requisição. O PHP corta o script ao atingir o limite de tempo de execução e registra Maximum execution time exceeded apontando a linha do while have_rows.",
                        "author": {
                            "@id": "https://full.services/#org"
                        }
                    }
                },
                {
                    "@type": "Question",
                    "@id": "https://full.services/wp-fixer/corrigir-repeater-loop-infinito-acf-pro/#faq-q3",
                    "name": "Como o Repeater aninhado gera o loop infinito?",
                    "inLanguage": "pt-BR",
                    "acceptedAnswer": {
                        "@type": "Answer",
                        "text": "Quando o laço interno chama have_rows com o nome do campo do laço externo em vez do nome do sub campo, os dois ponteiros se confundem e o nível interno nunca chega ao fim. Use o nome correto do sub campo no laço interno para que cada have_rows mantenha o próprio ponteiro.",
                        "author": {
                            "@id": "https://full.services/#org"
                        }
                    }
                },
                {
                    "@type": "Question",
                    "@id": "https://full.services/wp-fixer/corrigir-repeater-loop-infinito-acf-pro/#faq-q4",
                    "name": "Posso usar get_field em vez de have_rows no Repeater?",
                    "inLanguage": "pt-BR",
                    "acceptedAnswer": {
                        "@type": "Answer",
                        "text": "Pode, mas get_field devolve o array bruto sem gerenciar o ponteiro de linha, então você precisa percorrer com foreach e ler cada índice na mão. Para iterar com segurança, o padrão recomendado é have_rows com the_row e get_sub_field, que controla o estado do laço por você.",
                        "author": {
                            "@id": "https://full.services/#org"
                        }
                    }
                },
                {
                    "@type": "Question",
                    "@id": "https://full.services/wp-fixer/corrigir-repeater-loop-infinito-acf-pro/#faq-q5",
                    "name": "Para que serve a função reset_rows nesse erro?",
                    "inLanguage": "pt-BR",
                    "acceptedAnswer": {
                        "@type": "Answer",
                        "text": "Ela limpa o estado interno de linha do ACF. Quando o Repeater roda dentro de um loop de posts, o estado de um post pode vazar para o seguinte e manter um laço aberto. Chamar reset_rows ao fim de cada iteração evita esse vazamento entre posts.",
                        "author": {
                            "@id": "https://full.services/#org"
                        }
                    }
                },
                {
                    "@type": "Question",
                    "@id": "https://full.services/wp-fixer/corrigir-repeater-loop-infinito-acf-pro/#faq-q6",
                    "name": "Como confirmo qual linha está travando antes de corrigir?",
                    "inLanguage": "pt-BR",
                    "acceptedAnswer": {
                        "@type": "Answer",
                        "text": "Ative o log de erros do PHP com WP_DEBUG e WP_DEBUG_LOG e abra o arquivo de log. A mensagem de tempo de execução ou de memória aponta o arquivo e a linha exata do while have_rows que ficou aberta, confirmando a causa antes de você publicar a correção.",
                        "author": {
                            "@id": "https://full.services/#org"
                        }
                    }
                },
                {
                    "@type": "Question",
                    "@id": "https://full.services/wp-fixer/corrigir-repeater-loop-infinito-acf-pro/#faq-q7",
                    "name": "Por que não devo chamar get_field do Repeater dentro do while?",
                    "inLanguage": "pt-BR",
                    "acceptedAnswer": {
                        "@type": "Answer",
                        "text": "Reabrir o mesmo Repeater com get_field dentro do laço reposiciona o estado interno e impede o ponteiro de chegar ao fim, mantendo o laço aberto. Dentro do while, leia os valores apenas com get_sub_field, que opera na linha atual sem mexer no ponteiro.",
                        "author": {
                            "@id": "https://full.services/#org"
                        }
                    }
                }
            ]
        }
    ]
}
```
