# Como corrigir o erro de Heartbeat API entre Perfmatters e WP Rocket no WordPress

O erro de Heartbeat com Perfmatters e WP Rocket acontece quando os dois plugins controlam a Heartbeat API do WordPress ao mesmo tempo: o ajuste mais restritivo prevalece, derrubando autosave, bloqueio de edição e a previa do page builder.

## O que é erro de Heartbeat com Perfmatters e WP Rocket?

O Heartbeat com Perfmatters e WP Rocket envolve a Heartbeat API do WordPress, o mecanismo que faz o navegador chamar /wp-admin/admin-ajax.php em intervalos regulares (por padrão a cada 15 segundos) para tarefas como salvamento automático, bloqueio de post sendo editado e notificações em tempo real. Esse tráfego constante de admin-ajax consome CPU e gera muitas chamadas PHP, e por isso tanto o Perfmatters quanto o WP Rocket oferecem uma opção para reduzir ou desativar a Heartbeat.

O problema surge quando os dois plugins ficam responsaveis pela mesma API ao mesmo tempo. O Perfmatters tem a opção Disable Heartbeat (Leave as default, Disable everywhere ou Only Allow When Editing Posts/Pages) e também o ajuste de Heartbeat Frequency (15, 30, 45 ou 60 segundos). O WP Rocket tem a aba Heartbeat com Reduzir atividade ou Desativar para painel, editor de posts e frontend. Quando ambos atuam, o ajuste mais agressivo vence e o pulso para de chegar onde o editor precisa, quebrando funções que dependem dele.

## Como identificar

- O salvamento automático para de funcionar: o aviso 'Salvando rascunho...' nunca aparece e você perde alterações ao recarregar a página do editor.
- Surge o aviso 'Atenção: você esta editando este conteúdo, mas Fulano de Tal também comecou a editar' de forma errada, ou o bloqueio de post não trava mais quando dois usuários abrem o mesmo conteúdo.
- O painel deixa de mostrar notificações em tempo real (novos comentarios, status de publicação agendada) que dependem do pulso da Heartbeat.
- O editor do Elementor ou outro page builder exibe 'Não foi possível salvar' ou trava na previa após a Heartbeat ser desativada em todo lugar.
- No console do navegador as chamadas POST para admin-ajax.php com action=heartbeat desaparecem por completo, ou aparecem com intervalo muito maior que o esperado.

**Antes de começar:** Antes de alterar as configurações de Heartbeat e limpar cache em producao, faça um backup do site (arquivos e banco de dados) ou teste primeiro em um ambiente de staging, para reverter caso o editor ou o painel se comportem de forma inesperada.

## Como prevenir

- Defina uma regra clara: apenas um plugin (Perfmatters ou WP Rocket) controla a Heartbeat API, e documente qual e ele para a equipe.
- No Perfmatters, prefira 'Only Allow When Editing Posts/Pages' a 'Disable everywhere' quando houver page builder ativo, como recomenda a doc oficial.
- Ao reduzir o intervalo da Heartbeat, ajuste a frequencia em um plugin so (por exemplo 60 segundos no Perfmatters) e deixe o outro sem mexer no mesmo local.
- Depois de qualquer mudanca de Heartbeat, limpe o cache do WP Rocket e teste o autosave em uma tela de edição antes de publicar a alteração.

Erros relacionados

- [Como corrigir o erro de Heartbeat API ao controlar no WP Rocket](https://full.services/wp-fixer/corrigir-heartbeat-api-wp-rocket/)
- [Como corrigir o WP Rocket que não gera cache](https://full.services/wp-fixer/corrigir-wp-rocket-nao-gera-cache/)
- [Como corrigir conflitos de cache entre WP Rocket e Elementor](https://full.services/wp-fixer/corrigir-conflito-cache-wp-rocket-elementor/)

## Causa

- O Perfmatters esta com Disable Heartbeat em 'Disable everywhere' e o WP Rocket também esta com a Heartbeat em 'Desativar' no editor de posts: o pulso some no editor e o autosave e o bloqueio de post param de funcionar.
- O Perfmatters esta em 'Disable everywhere' enquanto um page builder como o Elementor esta ativo; a doc oficial do Perfmatters alerta que desativar a Heartbeat em todo lugar pode causar problemas na funcionalidade de page builders, e por isso recomenda 'Only Allow When Editing Posts/Pages'.
- Os dois plugins reduzem o intervalo ao mesmo tempo: o Perfmatters sobe a Heartbeat Frequency para 60 segundos e o WP Rocket aplica 'Reduzir atividade' no frontend, somando atrasos que fazem notificações em tempo real demorarem demais para chegar.
- O WP Rocket esta com 'Reduzir atividade' no painel e o Perfmatters em 'Disable everywhere'; como o ajuste mais restritivo prevalece, a Heartbeat fica desligada no painel e funções de tempo real do dashboard deixam de atualizar.
- Uma regra de cache de página do WP Rocket serve uma versão antiga do editor ou do admin para um usuário logado, mantendo um estado de Heartbeat divergente do que esta salvo nas configurações atuais dos plugins.

## Como resolver

1. Escolha um único plugin para controlar a Heartbeat: Decida se quem controla a Heartbeat API será o Perfmatters OU o WP Rocket, nunca os dois. Manter o controle em um so plugin evita que o ajuste mais restritivo de um anule o do outro e derrube o pulso onde o editor precisa.

```
Painel WP -> Configurações -> Perfmatters -> aba General -> seção Disable Heartbeat
Painel WP -> Configurações -> WP Rocket -> aba Heartbeat
```

2. No Perfmatters, use 'Only Allow When Editing Posts/Pages': Se optar pelo Perfmatters, troque a opção Disable Heartbeat de 'Disable everywhere' para 'Only Allow When Editing Posts/Pages'. A doc oficial recomenda essa opção porque mantem o pulso vivo dentro do editor (preservando autosave e bloqueio) e o desliga so onde não e necessário, além de evitar quebra de page builders.

```
Painel WP -> Configurações -> Perfmatters -> General -> Disable Heartbeat
Selecione 'Only Allow When Editing Posts/Pages'
Clique em Save Changes
```

3. No WP Rocket, neutralize o controle de Heartbeat do editor: Se o Perfmatters já cuida da Heartbeat, deixe o WP Rocket sem desligar o pulso no editor de posts. Mantenha o editor de posts em 'Não limitar' (ou no máximo 'Reduzir atividade') para não somar restricao com o Perfmatters e travar o autosave.

```
Painel WP -> Configurações -> WP Rocket -> aba Heartbeat
No campo Editor de posts, escolha 'Não limitar' ou 'Reduzir atividade'
Salve as alterações
```

4. Limpe o cache do WP Rocket e recarregue o editor: Depois de ajustar os dois plugins, limpe todo o cache do WP Rocket para que o painel e o editor não continuem servindo um estado antigo de Heartbeat. Recarregue uma tela de edição e confirme que o autosave volta a aparecer.

```
Painel WP -> Configurações -> WP Rocket -> Limpar cache
Abra um post em edição e aguarde o aviso 'Salvando rascunho...'
```

5. Confirme o pulso pelo console do navegador: Valide que a Heartbeat voltou a pulsar no editor inspecionando as chamadas de rede. Você deve ver requisicoes POST periodicas para admin-ajax.php com action=heartbeat enquanto a tela de edição esta aberta.

```
Abra o editor de um post e pressione F12 -> aba Network (Rede)
Filtre por admin-ajax.php e confirme POSTs periodicos com action=heartbeat
```


## Código

```php
<?php
// Centraliza o controle da Heartbeat em UM unico ponto (tema/plugin) e desativa
// o controle dos plugins para evitar o conflito Perfmatters x WP Rocket.
add_filter( 'heartbeat_settings', 'full_heartbeat_interval' );
function full_heartbeat_interval( $settings ) {
    // Mantem o pulso vivo no editor, mas a cada 60s (em vez de 15s) para aliviar a CPU.
    $settings['interval'] = 60; // segundos (faixa valida do core: 15 a 120)
    return $settings;
}

// Desliga a Heartbeat apenas no frontend, onde o editor nao precisa dela.
add_action( 'init', 'full_heartbeat_frontend_off', 1 );
function full_heartbeat_frontend_off() {
    if ( ! is_admin() ) {
        wp_deregister_script( 'heartbeat' );
    }
}
```

## Perguntas frequentes

### Por que o autosave parou depois de instalar Perfmatters e WP Rocket

Porque os dois plugins estão controlando a Heartbeat API ao mesmo tempo e o ajuste mais restritivo desligou o pulso no editor. O salvamento automático depende da Heartbeat; deixe so um plugin no controle e mantenha o pulso ativo durante a edição.

### Posso usar o controle de Heartbeat do Perfmatters e do WP Rocket juntos

Não e recomendado. Quando os dois atuam sobre a mesma API, o ajuste mais agressivo prevalece e fica dificil prever o resultado. Escolha um plugin para controlar a Heartbeat e deixe o outro em 'Não limitar' ou no padrão.

### Qual opção de Disable Heartbeat devo usar no Perfmatters

A doc oficial do Perfmatters recomenda 'Only Allow When Editing Posts/Pages'. Ela reduz as chamadas de admin-ajax fora do editor mas mantem o pulso onde o autosave e o bloqueio de post precisam dele, e evita quebrar page builders.

### Desativar a Heartbeat em todo lugar quebra o Elementor

Pode quebrar. A doc do Perfmatters alerta que 'Disable everywhere' as vezes causa problemas na funcionalidade de page builders. Com Elementor ou outro builder ativo, use 'Only Allow When Editing Posts/Pages' em vez de desligar tudo.

### Com que frequencia a Heartbeat API roda por padrão

Por padrão o navegador chama /wp-admin/admin-ajax.php a cada 15 segundos. O Perfmatters permite mudar essa frequencia para 30, 45 ou 60 segundos; reduzir o número de chamadas ajuda no consumo de CPU sem desligar funções do editor.

### Desligar a Heartbeat afeta o bloqueio de post entre usuários

Sim. O bloqueio que avisa quando outro usuário esta editando o mesmo post depende do pulso da Heartbeat. Se ela for desativada no editor, dois usuários podem sobrescrever o trabalho um do outro sem aviso.

### Como confirmo que a Heartbeat voltou a funcionar

Abra um post no editor, pressione F12, va na aba Network e filtre por admin-ajax.php. Você deve ver requisicoes POST periodicas com action=heartbeat enquanto a tela de edição estiver aberta.

### O cache do WP Rocket pode manter o erro mesmo depois do ajuste

Pode. Uma página de admin ou editor em cache serve um estado antigo de Heartbeat. Depois de ajustar os plugins, limpe todo o cache do WP Rocket e recarregue o editor para aplicar a nova configuração.

**Fonte:** [Perfmatters — How to disable the WordPress Heartbeat API](https://perfmatters.io/docs/disable-wordpress-heartbeat-api/)
