Como corrigir o erro de Heartbeat API ao controlar no WP Rocket no WordPress
O que é erro de Heartbeat API no WP Rocket?
A Heartbeat API do WordPress e um mecanismo que troca dados em tempo real entre o navegador e o servidor em intervalos curtos. Segundo a documentação do WP Rocket, ela roda a cada 15 a 60 segundos e sustenta funções como autosave, post-locking (avisar que outra pessoa esta editando o post), notificações do painel e atualizações em tempo real. O WP Rocket oferece a opção Control Heartbeat justamente para reduzir essa atividade, porque cada batida e uma chamada ao admin-ajax.php que consome CPU no servidor.
O erro de Heartbeat API no WP Rocket aparece quando esse controle e agressivo demais. Ao escolher Disable em vez de Reduce activity, ou ao desligar a Heartbeat na área errada, o WP Rocket corta o sinal que esses recursos precisam. O resultado pratico e o rascunho que não salva sozinho, o aviso de quem esta editando que some, o Site Health que não carrega e plugins de tempo real (carrinho, pedidos, notificações) que param de atualizar. A página continua rápida, mas funções administrativas quebram em silencio.
Como identificar
- O editor exibe ‘A atualização automática esta desativada’ ou para de mostrar ‘Rascunho salvo’ enquanto você escreve, indicando que o autosave parou.
- O aviso de post-locking (‘Fulano esta editando este post’) não aparece mais, e dois usuários sobrescrevem o trabalho um do outro sem alerta.
- Em Ferramentas -> Saude do site, a aba Status fica girando e nunca carrega os resultados dos testes.
- Plugins de tempo real (WooCommerce, notificações, contadores ao vivo) param de atualizar sozinhos e so mostram dados novos após recarregar a página.
- Na aba Network do navegador (F12), as chamadas periodicas para admin-ajax.php com ‘action=heartbeat’ desaparecem ou ficam muito espacadas.
Como prevenir
- Prefira sempre Reduce activity a Disable no Control Heartbeat: a opção reduzida (de 60s para 120s) já corta a maior parte do consumo sem matar autosave, post-locking e Site Health.
- Documente quais plugins do site dependem de tempo real (carrinho, pedidos, notificações) antes de desativar a Heartbeat em qualquer área, para não quebrar um recurso ativo sem perceber.
- Use apenas um controlador de Heartbeat por site: escolha entre o Control Heartbeat do WP Rocket OU um plugin/snippet dedicado, nunca os dois somados.
- Após cada mudanca na aba Heartbeat, teste o autosave, o aviso de post-locking e o Site Health antes de subir a configuração para producao.
Causa
- A opção Control Heartbeat do WP Rocket esta marcada como Disable (em vez de Reduce activity) para o Post editor, cortando o sinal que mantem o autosave e o post-locking ativos durante a edição.
- O Control Heartbeat esta com Disable aplicado ao Backend (Dashboard): a documentação do WP Rocket avisa que, nesse caso, o Site Health não consegue carregar os resultados dos testes.
- A Heartbeat foi reduzida para uma batida a cada 2 minutos (Reduce activity baixa de 60s para 120s) e um plugin de tempo real esperava o intervalo padrão, ficando com dados defasados até o recarregamento.
- A Heartbeat foi desativada no Frontend, mas um plugin (como carrinho do WooCommerce ou notificações ao vivo) dependia da batida no frontend para sincronizar e parou de atualizar.
- Existe um segundo controlador de Heartbeat ativo ao mesmo tempo (plugin Heartbeat Control ou snippet no functions.php) somando-se ao WP Rocket e desligando a API além do esperado.
Como resolver
- Abra a aba Heartbeat do WP Rocket: No painel, va até as configurações do WP Rocket e abra a aba Heartbeat, onde fica a opção Control Heartbeat. E aqui que você define o nível de atividade para cada área do site.
Painel WP -> Configurações -> WP Rocket -> aba Heartbeat Confirme se a caixa 'Control Heartbeat' esta marcada - Troque Disable por Reduce activity no Post editor: Para a área Post editor (Specify how often the Heartbeat API can run when editing posts), escolha Reduce activity em vez de Disable. Isso baixa o intervalo de 60 para 120 segundos sem cortar o autosave nem o post-locking, segundo a doc oficial do WP Rocket.
Behavior in backend (Post editor) -> selecione 'Reduce activity' Salve as alterações e abra um post para confirmar o aviso 'Rascunho salvo' - Use Reduce activity (não Disable) no Backend para o Site Health: Se você precisa do Site Health e das notificações do painel, não deixe o Backend (Dashboard) como Disable. A documentação avisa que desativar a Heartbeat no backend impede o Site Health de carregar os resultados. Prefira Reduce activity.
Behavior in backend (Dashboard) -> selecione 'Reduce activity' Painel WP -> Ferramentas -> Saude do site -> confirme que a aba Status carrega - Reative a Heartbeat no Frontend se um plugin depende dela: Se um plugin de tempo real (carrinho, notificações ao vivo) parou de atualizar, mude a área Frontend de Disable para Reduce activity ou Do not limit. So mantenha o Frontend desativado quando nenhum plugin precisar de AJAX em tempo real ali.
Behavior in frontend -> selecione 'Reduce activity' ou 'Do not limit' Recarregue a página onde o plugin de tempo real roda e confirme a atualização - Limpe o cache e remova controladores de Heartbeat duplicados: Limpe o cache do WP Rocket para aplicar as mudancas e verifique se ha um segundo controle ativo. Se houver o plugin Heartbeat Control ou um snippet no functions.php somando-se ao WP Rocket, mantenha apenas um deles para não desligar a API duas vezes.
Painel WP -> WP Rocket -> Clear and preload cache Painel WP -> Plugins -> desative outro plugin de 'Heartbeat Control' se existir Revise o functions.php em busca de 'heartbeat_settings' ou 'wp_deregister_script("heartbeat")' duplicado
<?php
/**
* Ajuste fino da Heartbeat API por area.
* Mantem o autosave/post-locking no editor (intervalo seguro)
* e so reduz a frequencia, em vez de desativar a API.
*/
add_filter( 'heartbeat_settings', 'full_ajusta_heartbeat' );
function full_ajusta_heartbeat( $settings ) {
// Intervalo em segundos: minimo 15, maximo 120 (WordPress aceita 15-120).
$settings['interval'] = 120;
return $settings;
}
// Mantem a Heartbeat viva no editor de posts (autosave e post-locking).
add_action( 'admin_enqueue_scripts', 'full_garante_heartbeat_editor' );
function full_garante_heartbeat_editor( $hook ) {
if ( in_array( $hook, array( 'post.php', 'post-new.php' ), true ) ) {
wp_enqueue_script( 'heartbeat' );
}
}














