# Como corrigir o erro de sitemap preload no WP Rocket

O erro de sitemap preload no WP Rocket acontece quando o plugin não consegue ler o sitemap para gerar o cache: sitemap vazio ou bloqueado, extensão SimpleXML ausente no servidor ou requisicao de loopback negada interrompem o preload antes de ele rodar.

## O que é erro de sitemap preload no WP Rocket?

O WP Rocket sitemap preload e o recurso que le os sitemaps do site para visitar cada URL e gerar o cache antecipadamente, fazendo as páginas servirem rápido já na primeira visita. Por padrão o plugin escaneia os sitemaps gerados por plugins de SEO com compatibilidade automática (Yoast SEO, Rank Math, All in One SEO, SEOPress e The SEO Framework) e, quando nenhum sitemap de terceiro e detectado, recorre ao sitemap nativo do WordPress. Cada URL preenchida e registrada na tabela wp_wpr_rocket_cache do banco de dados.

O erro aparece quando esse fluxo quebra: o preload não inicia, fica preso, ou poucas páginas são geradas. Segundo a documentação oficial do WP Rocket, as causas técnicas mais comuns são o sitemap estar vazio ou inacessivel publicamente, a extensão PHP SimpleXML estar desabilitada no servidor, limites de PHP insuficientes (memória abaixo de 256 MB ou tempo de execução abaixo de 120 segundos), o cron não conseguir rodar, ou o servidor bloquear requisicoes de loopback (o site não consegue se conectar a si mesmo via cURL).

## Como identificar

- A geração de cache fica em zero ou parada: em WP Rocket -> Dashboard, a contagem de páginas pre-carregadas não avança mesmo após limpar e pre-carregar o cache.
- O WordPress exibe o aviso 'Your site could not complete a loopback request' em Ferramentas -> Saude do Site (Site Health), indicando que o preload não consegue visitar as proprias URLs.
- Poucas URLs ou apenas a home aparecem com cache gerado, enquanto a maior parte das páginas listadas no sitemap continua sem arquivo de cache.
- O preload parece nunca terminar e o site fica lento durante o processo, sinal de que o cron dispara a fila mas o servidor não tem recurso para completa-la.
- Ao abrir o sitemap em wp-content ou na URL do plugin de SEO, ele retorna vazio, com erro 404 ou exige login, entao o WP Rocket não tem URLs para ler.

**Antes de começar:** Antes de editar o wp-config.php, o php.ini ou alterar o cron em producao, faça um backup completo do site (arquivos e banco de dados) ou teste primeiro em um ambiente de staging, para poder reverter caso o site fique inacessivel.

## Como prevenir

- Mantenha apenas um plugin de SEO gerando sitemap (Yoast, Rank Math, AIOSEO ou SEOPress) para o WP Rocket detectar uma fonte única e valida de URLs.
- Verifique periodicamente em uma aba anonima se o sitemap continua público e com URLs, principalmente após migracoes de servidor ou mudancas de staging para producao.
- Use sempre um cron real no servidor em vez do WP Cron e mantenha a memória PHP em 256 MB ou mais para a fila de preload concluir sem timeout.
- Confirme com a hospedagem que a extensão SimpleXML e as requisicoes de loopback estão liberadas antes de ativar o preload em um servidor novo.

Erros relacionados

- [Como corrigir a exclusão de páginas do cache no WP Rocket](https://full.services/wp-fixer/corrigir-exclusao-cache-wp-rocket/)
- [Como corrigir erros de cache do WP Rocket em multisite](https://full.services/wp-fixer/corrigir-cache-wp-rocket-multisite/)
- [Como corrigir o cache do WP Rocket em páginas de curso do Tutor LMS](https://full.services/wp-fixer/corrigir-cache-wp-rocket-tutor-lms/)

## Causa

- O sitemap detectado pelo WP Rocket esta vazio: a documentação oficial exige que os sitemaps tenham URLs, e um sitemap sem entradas faz o preload não ter nada para pre-carregar.
- A extensão PHP SimpleXML esta desabilitada no servidor: o WP Rocket usa SimpleXML para fazer o parsing do XML do sitemap, e sem ela o preload não consegue ler as URLs.
- O sitemap não esta publicamente acessivel: se o XML retorna 404, redireciona errado ou exige autenticacao (site em staging, .htpasswd ou plugin de manutenção), o WP Rocket não alcança o arquivo.
- O servidor bloqueia requisicoes de loopback via cURL, gerando o erro 'Your site could not complete a loopback request'; sem se conectar a si mesmo, o WP Rocket não visita as URLs para gerar cache.
- Os limites de PHP estão abaixo do mínimo recomendado pela doc (256 MB de memória e 120 segundos de tempo de execução), fazendo a fila de preload estourar o timeout antes de terminar.
- O cron não roda de forma confiavel: sem WP Cron funcional ou um cron real no servidor, a fila do preload (até 45 URLs a cada 60 segundos) não e processada e o preload nunca avança.

## Como resolver

1. Confirme que o sitemap tem URLs e abre publicamente: Abra a URL do sitemap do seu plugin de SEO em uma janela anonima do navegador e confirme que ele lista URLs reais e não retorna 404 nem pede login. Um sitemap vazio ou inacessivel e a causa mais comum do preload não gerar cache.

```
Abra https://seusite.com/sitemap_index.xml (Yoast) ou https://seusite.com/sitemap.xml (Rank Math/WordPress)
Use uma aba anonima para garantir que não ha bloqueio por login ou staging
Confirme que o XML lista URLs e não retorna 404 ou página vazia
```

2. Verifique se a extensão SimpleXML do PHP esta ativa: O WP Rocket precisa da extensão SimpleXML para ler o XML do sitemap. Cheque em Ferramentas -> Saude do Site -> Informações ou via WP-CLI; se estiver ausente, peça ao suporte da hospedagem para habilita-la no PHP.

```
wp eval 'var_dump( extension_loaded( "simplexml" ) );'
Ou: Painel WP -> Ferramentas -> Saude do Site -> Informações -> Servidor -> verifique 'SimpleXML'
Se retornar false, solicite ao suporte da hospedagem habilitar a extensão SimpleXML no PHP
```

3. Resolva o erro de requisicao de loopback: Abra a Saude do Site e veja se aparece o aviso de loopback. Esse erro impede o WP Rocket de visitar as proprias URLs. Costuma vir de firewall, autenticacao básica ou bloqueio de cURL na hospedagem, que precisa liberar a conexão do site com ele mesmo.

```
Painel WP -> Ferramentas -> Saude do Site -> procure 'loopback request'
Remova autenticacao .htpasswd ou regras de firewall que bloqueiem o próprio domínio
Peça ao suporte da hospedagem para liberar requisicoes cURL do site para ele mesmo
```

4. Aumente os limites de PHP: A documentação recomenda no mínimo 256 MB de memória e 120 segundos de tempo de execução para o preload concluir a fila. Ajuste no wp-config.php ou php.ini, ou peça o aumento ao suporte da hospedagem.
5. Edite o wp-config.php e adicione antes da linha 'That's all, stop editing':

```
define( 'WP_MEMORY_LIMIT', '256M' );
No php.ini: max_execution_time = 120 e memory_limit = 256M
```

6. Garanta um cron confiavel e refaça o preload: A doc recomenda um cron real no servidor em vez do WP Cron para a fila do preload rodar de forma estavel. Depois de ajustar o cron, limpe e pre-carregue o cache no WP Rocket para reiniciar o preload do sitemap.

```
Desative o WP Cron no wp-config.php: define( 'DISABLE_WP_CRON', true );
Crie um cron real no servidor: */5 * * * * wget -q -O - https://seusite.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1
Painel WP -> WP Rocket -> Painel -> 'Limpar e pre-carregar o cache'
```


## Código

```php
<?php
// Diagnostico rapido: confirme os pre-requisitos do preload do WP Rocket.
// Cole no functions.php do tema-filho TEMPORARIAMENTE e veja o admin notice.
add_action( 'admin_notices', 'full_wp_rocket_preload_check' );
function full_wp_rocket_preload_check() {
    if ( ! current_user_can( 'manage_options' ) ) {
        return;
    }
    $simplexml = extension_loaded( 'simplexml' ) ? 'OK' : 'AUSENTE';
    $memoria   = ( wp_convert_hr_to_bytes( WP_MEMORY_LIMIT ) >= 256 * MB_IN_BYTES ) ? 'OK' : 'BAIXA';
    $resposta  = wp_remote_get( home_url( '/wp-cron.php' ), array( 'timeout' => 5, 'sslverify' => false ) );
    $loopback  = is_wp_error( $resposta ) ? 'FALHOU: ' . $resposta->get_error_message() : 'OK';
    printf(
        '<div class="notice notice-info"><p>WP Rocket preload &mdash; SimpleXML: %s | Memoria PHP: %s | Loopback: %s</p></div>',
        esc_html( $simplexml ),
        esc_html( $memoria ),
        esc_html( $loopback )
    );
}
```

## Perguntas frequentes

### Por que o preload do WP Rocket não gera cache das páginas do sitemap

Na maioria dos casos o sitemap esta vazio, retorna 404 ou exige login, entao o WP Rocket não tem URLs para ler. Abra a URL do sitemap em uma aba anonima e confirme que ele lista páginas reais e abre sem autenticacao.

### O que e o erro de loopback request no WP Rocket

E quando o servidor impede o site de se conectar a si mesmo via cURL, mostrando 'Your site could not complete a loopback request' na Saude do Site. Sem essa conexão o WP Rocket não visita as proprias URLs, entao o preload não gera o cache. A hospedagem precisa liberar a requisicao.

### Preciso da extensão SimpleXML para o preload do sitemap funcionar

Sim. A documentação oficial do WP Rocket exige a extensão PHP SimpleXML habilitada no servidor para o plugin fazer o parsing do XML do sitemap. Se ela estiver ausente, peça ao suporte da hospedagem para ativa-la no PHP.

### Quais plugins de SEO o WP Rocket reconhece para o preload do sitemap

O WP Rocket tem compatibilidade automática com os sitemaps do Yoast SEO, Rank Math, All in One SEO, SEOPress e The SEO Framework. Se nenhum desses for detectado, ele usa o sitemap nativo do WordPress como fonte das URLs.

### Quais limites de PHP o preload do WP Rocket precisa

A doc recomenda no mínimo 256 MB de memória e 120 segundos de tempo de execução para a fila de preload concluir sem estourar o timeout. Ajuste no wp-config.php ou php.ini, ou peça o aumento ao suporte da hospedagem.

### O preload demora muito e deixa o site lento, isso e normal

O WP Rocket processa até 45 URLs a cada 60 segundos e reduz o ritmo se detecta sobrecarga. Em sites grandes a fila demora, mas se o site fica lento ou o preload não termina, o problema costuma ser cron instavel ou pouco recurso de PHP no servidor.

### Onde o WP Rocket guarda o status das URLs do preload

Na tabela wp_wpr_rocket_cache do banco de dados, onde o WP Rocket registra cada URL e seu status de preload. Se a fila trava, e nessa tabela que o plugin acompanha o progresso da geração do cache.

### Como reiniciar o preload do sitemap depois de corrigir o erro

Va em WP Rocket -> Painel e clique em 'Limpar e pre-carregar o cache'. Isso esvazia o cache atual e dispara o preload novamente, lendo o sitemap do zero após você ter ajustado sitemap, SimpleXML, loopback ou limites de PHP.

**Fonte:** [WP Rocket Knowledge Base — Preload is slow or some pages are not preloaded](https://docs.wp-rocket.me/article/1065-sitemap-preload-is-slow-or-some-pages-are-not-preloaded-at-all)
