Como corrigir o erro de sitemap preload no WP Rocket
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.
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.
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
- 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 - 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 - 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 - 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.
- 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 - 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'
<?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 — SimpleXML: %s | Memoria PHP: %s | Loopback: %s</p></div>',
esc_html( $simplexml ),
esc_html( $memoria ),
esc_html( $loopback )
);
}














