Para desativar wp-cron você define DISABLE_WP_CRON como true no wp-config.php e cria um agendamento real no servidor. Segundo a WordPress Developer Docs (2026), o WP-Cron só dispara quando alguém carrega uma página, não em horário fixo. Um cron de sistema roda a cada 5 minutos com precisão de segundos. O resultado é menos picos de PHP e agendamentos confiáveis.
O WP-Cron é o agendador interno do WordPress que executa tarefas como publicar posts agendados, rodar backups e checar atualizações. O problema é que ele depende de visitas: sem tráfego, nada roda; com muito tráfego, ele dispara em excesso e consome PHP. Aprender a desativar wp-cron e substituí-lo por um cron real do sistema operacional resolve os dois extremos de uma vez. Este guia técnico mostra o caminho completo, do wp-config.php ao crontab, com os cuidados de frequência e de ambiente multisite. Para acelerar o site como um todo, comece pelos conteúdos de performance WordPress da FULL.
Primeiros passos: O que o wp-cron faz e por que trocá-lo
O WP-Cron executa tarefas agendadas a cada carregamento de página, e esse gatilho cria 2 problemas opostos no mesmo site. Sem tráfego, um backup agendado para as 3h só roda às 9h, quando chega a primeira visita. Com muito tráfego, cada hit verifica a fila de tarefas e soma chamadas de PHP que poderiam ser evitadas.
Segundo a documentação oficial do WP-Cron na WordPress Developer Docs, que descreve como o agendador é acionado, o wp-cron.php só dispara em resposta a uma requisição HTTP do navegador ou de um bot. Esse desenho explica por que tarefas críticas como backups, envio de e-mails transacionais e limpeza de revisões ficam reféns do fluxo de visitantes. Trocar o gatilho por visita por um cron real desacopla o agendamento do tráfego: as tarefas rodam no horário definido, com a precisão de um relógio de servidor, e pesam menos no TTFB de cada página.
Diagnóstico rápido: Sintomas que indicam wp-cron sobrecarregado
Três sinais apontam que o WP-Cron atrapalha a performance: posts agendados com atraso de horas, picos de CPU em horários de visita e a CPU do servidor passando de 70% sob carga média. A gente vê no suporte da FULL que boa parte dos sites com lentidão intermitente tem o WP-Cron rodando sem controle.
Esses disparos costumam vir de bots e crawlers que inflam a fila de tarefas a cada visita. Antes de mexer no wp-config.php, vale mapear o que cada sintoma significa na prática, porque a causa raiz muda a ação corretiva. A tabela abaixo cruza sintoma, causa e correção para você decidir rápido.
| Sintoma | Causa raiz | Ação corretiva |
|---|---|---|
| Posts agendados atrasados | Pouco tráfego, sem visita no horário | Cron real a cada 5 minutos |
| Picos de CPU em horário de pico | Fila checada a cada visita | Desativar wp-cron por visita |
| Backups inconsistentes | Job depende de hit do usuário | Agendar via crontab do sistema |
Como o wp-cron difere de um cron real do sistema
O WP-Cron é um pseudo-cron: não tem horário próprio e só age quando o wp-cron.php é chamado por uma visita ao site. Um cron real, gerenciado pelo crontab do Linux ou pelo painel Cron Jobs do cPanel, roda em intervalos fixos definidos no sistema operacional, com desvio de poucos segundos em relação ao horário programado.
A diferença prática aparece na confiabilidade e no consumo de recursos. Um cron de sistema configurado para 5 minutos sempre roda em 5 minutos, enquanto o WP-Cron pode ficar horas parado num site de baixo movimento ou disparar centenas de vezes por hora num site movimentado. Por isso a recomendação para produção é desativar wp-cron como gatilho de visita e delegar a execução ao agendador nativo do servidor, o mesmo mecanismo confiável usado por servidores de e-mail e rotinas de backup há décadas.
Passo a passo: Desativar o wp-cron e configurar um cron real
Desativar wp-cron leva menos de 10 minutos e envolve 1 constante no wp-config.php mais 1 agendamento no servidor. A sequência abaixo cobre os 4 estágios: editar o arquivo de configuração, criar o cron de sistema, validar a execução e ajustar a frequência.
Faça um backup do wp-config.php antes de começar, porque uma vírgula fora do lugar nesse arquivo derruba o site inteiro com tela branca. Cada passo a seguir tem um comando exato e um critério de validação, para você não avançar com o agendamento quebrado.
Passo 1: Defina disable_wp_cron no wp-config.php
Abra o arquivo wp-config.php na raiz do site e adicione a linha define( 'DISABLE_WP_CRON', true ); acima do comentário / That's all, stop editing! /. Essa constante impede que o WordPress dispare o wp-cron.php a cada carregamento de página. Salve e recarregue o site para confirmar que nada quebrou: a tela branca da morte aqui quase sempre é uma vírgula ou aspas trocadas. A partir desse momento, nenhuma tarefa agendada vai rodar até você criar o cron real, então não pule o próximo passo.
Passo 2: Crie o cron real no crontab ou no cron jobs
Acesse o crontab via SSH com crontab -e ou abra o painel Cron Jobs no cPanel e crie uma entrada que chame o wp-cron.php a cada 5 minutos. A linha clássica é /5 wget -q -O - https://seusite.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1. Quem tem acesso a terminal pode usar o WP-CLI, que é mais limpo: /5 cd /caminho/do/site && wp cron event run --due-now. O WP-CLI executa só as tarefas vencidas, sem fazer uma requisição HTTP, o que reduz o overhead em servidores compartilhados.
Passo 3: Valide a execução do cron
Confirme que o agendamento funciona antes de confiar nele em produção. Com o WP-CLI, rode wp cron event list para ver a fila de tarefas e seus horários; depois wp cron test para checar se a infraestrutura responde. No nível do sistema, o comando grep wp-cron /var/log/syslog mostra se o crontab está executando a entrada nos intervalos certos. Um teste prático: agende um post para daqui a 6 minutos e veja se ele publica sozinho. Se publicar sem ninguém visitar o site, o cron real está ativo e o WP-Cron por visita foi substituído com sucesso.
Passo 4: Ajuste a frequência e cuidados de ambiente
Calibre o intervalo conforme a carga do site, porque frequência demais desperdiça recursos e de menos atrasa tarefas. Para a maioria dos sites, 5 minutos é o ponto de equilíbrio; lojas WooCommerce com muitos jobs de estoque podem precisar de 1 minuto, enquanto blogs simples ficam bem com 15 minutos. Em ambiente WordPress Multisite, atenção: cada subsite tem sua própria fila, então o cron precisa rodar wp cron event run --due-now --url=cadasite.com por site, ou usar --network no WP-CLI para varrer toda a rede de uma vez.
Cuidados em multisite e em hospedagem gerenciada
Em WordPress Multisite cada site da rede mantém 1 fila de cron independente, e ignorar isso faz tarefas de subsites nunca rodarem. O comando wp cron event run --due-now --network percorre todos os sites em 1 disparo do crontab, evitando criar dezenas de entradas separadas para cada subsite da rede.
Já em hospedagem gerenciada, muitos provedores desativam o WP-Cron por visita e injetam um cron de sistema por padrão, então duplicar a configuração pode causar execução dupla de backups e de e-mails. A gente vê no suporte que a maior parte dos conflitos de agendamento nasce dessa sobreposição entre o cron do provedor e o que o usuário cria por conta própria. Antes de editar o wp-config.php, confirme no painel da hospedagem ou abra um chamado para checar se um cron real já não está ativo no servidor.
Acelere o agendamento e o site inteiro com o plano certo
Desativar wp-cron resolve o agendamento, mas a performance real depende de cache, otimização e infraestrutura trabalhando juntos. O plano PRO da FULL custa R$849,90 e dá acesso aos 16 plugins premium, o que sai em torno de R$85 por site para quem gerencia vários projetos ao mesmo tempo, com WP Rocket e Perfmatters já incluídos no pacote.
A gente vê no suporte que separar o cron do tráfego é só o primeiro passo de uma estratégia maior: o ganho real de velocidade vem quando o cache de página e o Perfmatters entram na conta e reduzem o trabalho do servidor a cada requisição. Conheça os planos da FULL para ativar todas as ferramentas de uma vez, sem licenciar plugin por plugin.
Impacto nas Core Web Vitals e na estabilidade do servidor
Tirar o WP-Cron do caminho das visitas reduz o trabalho de PHP por requisição e estabiliza o tempo de resposta sob carga. Cada visita que não checa mais a fila de tarefas economiza ciclos de CPU, o que ajuda as Core Web Vitals a se manterem consistentes nos horários de pico de acesso.
O efeito é maior em sites com muito tráfego de bots, onde cada crawl disparava o wp-cron.php e somava processamento desnecessário. Quem combina cron real com a Heartbeat API controlada e um plugin de cache como o WP-Optimize costuma ver o TTFB cair de forma perceptível, já que três fontes de carga deixam de competir pelo mesmo processo PHP. Para um plano de aceleração completo, do servidor ao front-end, o guia acelere o WordPress reúne os próximos passos.
Perguntas frequentes sobre wp-cron
Como desativar wp-cron sem quebrar os posts agendados?
Você desativa o WP-Cron por visita com `define( ‘DISABLE_WP_CRON’, true );` no wp-config.php e, no mesmo momento, cria um cron de sistema a cada 5 minutos. Enquanto o cron real estiver rodando, os posts agendados continuam publicando no horário, porque a fila de tarefas passa a ser disparada pelo crontab e não mais pelas visitas dos usuários.
É possível usar um cron real sem acesso SSH ao servidor?
Sim, é possível. O painel Cron Jobs do cPanel cria agendamentos sem terminal: basta apontar uma entrada com `wget` ou `curl` para o wp-cron.php no intervalo de 5 minutos. Hospedagens gerenciadas costumam oferecer um campo próprio de cron no painel, sem exigir SSH nem editar o crontab via linha de comando.
Por que meus posts agendados atrasam mesmo com o wp-cron ativo?
Os posts atrasam porque o WP-Cron só roda quando alguém carrega uma página do site. Num site de baixo tráfego, um post marcado para as 3h pode só sair às 9h, quando chega a primeira visita do dia. Trocar por um cron de sistema a cada 5 minutos elimina o atraso, já que o agendamento deixa de depender de visitas.
Quando devo escolher 1 minuto em vez de 5 minutos no cron?
Escolha 1 minuto apenas em sites com muitas tarefas sensíveis a tempo, como lojas WooCommerce que sincronizam estoque e pagamentos. Para a maioria dos blogs e sites institucionais, 5 minutos é o equilíbrio entre confiabilidade e consumo de recursos. Intervalos de 15 minutos servem a sites simples, onde nenhuma tarefa precisa de resposta quase imediata.
O WP-CLI é melhor que o wget para rodar o cron real do WordPress?
Em geral, sim. O comando `wp cron event run –due-now` do WP-CLI executa só as tarefas vencidas, sem abrir uma requisição HTTP completa ao wp-cron.php. Isso reduz o overhead em servidores compartilhados e evita timeouts de rede. O wget continua válido quando não há WP-CLI instalado, mas exige 1 chamada HTTP a cada disparo do crontab.
Próximos passos para um agendamento confiável
Desativar wp-cron e adotar um cron real transforma o agendamento do WordPress de algo dependente de tráfego em algo previsível como qualquer tarefa de servidor. O caminho é direto: DISABLE_WP_CRON no wp-config.php, uma entrada no crontab ou no Cron Jobs a cada 5 minutos, validação com WP-CLI e ajuste de frequência conforme a carga. Em multisite e em hospedagem gerenciada, confirme antes se um cron já existe para não duplicar a execução. Para continuar aprendendo a otimizar seu site, o FULL Academy reúne tutoriais, guias e reviews sobre performance WordPress em um só lugar.
















