Substituir a cron do WordPress pelo cronjob do cPanel

Um post agendado que não foi publicado na hora, um e-mail do WooCommerce que não saiu, um backup automático que não rodou — na maioria das vezes, o culpado é o WP-Cron, o sistema de tarefas agendadas do WordPress.

O problema é que o WP-Cron não é um agendador de verdade: ele só roda quando alguém visita o site. A solução é desativá-lo e deixar que o cron do servidor chame o WordPress em intervalos fixos — uma configuração de cinco minutos no cPanel ou no DirectAdmin.

Resposta rápida

1. No wp-config.php, acrescente define('DISABLE_WP_CRON', true);. 2. No cPanel, em Trabalhos Cron, crie uma tarefa a cada 15 minutos com o comando wget -q -O - https://seusite.com.br/wp-cron.php?doing_wp_cron >/dev/null 2>&1, trocando pelo endereço do seu site. 3. Confira em Ferramentas → Saúde do site se os eventos agendados estão em dia.

Por que o WP-Cron falha

O WP-Cron não tem um relógio próprio. A cada visita, o WordPress verifica se há alguma tarefa vencida — e, se houver, a executa naquele momento. Isso causa três problemas:

  • Em sites com pouco tráfego, as tarefas atrasam. Se ninguém visitar o site às 9h, o post agendado para 9h só sai quando chegar a primeira visita.
  • Com cache de página, as visitas não acionam o WordPress. O plugin de cache entrega a página pronta, e o WP-Cron não é chamado.
  • Em sites com muito tráfego, ele roda demais. A verificação acontece a cada visita, consumindo processamento à toa.

Há ainda um motivo técnico: o WP-Cron funciona fazendo uma requisição do site para ele mesmo. Se essa requisição for bloqueada — por um firewall, uma senha de proteção na pasta ou um problema de DNS —, as tarefas simplesmente não rodam.

O cron do servidor resolve os três: ele chama o WordPress em intervalos fixos, com ou sem visitas, e só quando necessário.

Passo 1: desative o WP-Cron

Abra o arquivo wp-config.php, na pasta onde o WordPress está instalado, pelo Gerenciador de Arquivos do painel ou por FTP. Antes da linha que diz “Isto é tudo, pode parar de editar!” (ou “That’s all, stop editing!”, nas instalações em inglês), acrescente:

define('DISABLE_WP_CRON', true);

Se preferir não digitar, marque “Desativar o WP-Cron” no nosso gerador de wp-config.php e copie a linha pronta — ele também avisa para criar a tarefa no cron do painel em seguida.

Salve o arquivo. A partir daqui, as tarefas agendadas param de rodar até você concluir o passo 2 — por isso, faça os dois passos em sequência.

Passo 2: crie a tarefa no painel

No cPanel

  1. No cPanel, na seção Avançado, clique em Trabalhos Cron.
  2. Em Configurações comuns, escolha A cada 15 minutos — ou preencha os campos com */15 * * * *.
Tela Trabalhos Cron do cPanel com a escolha do intervalo da tarefa

3. No campo Comando, cole a linha abaixo, trocando pelo endereço do seu site:

wget -q -O - https://seusite.com.br/wp-cron.php?doing_wp_cron >/dev/null 2>&1
Campo Comando do cPanel com a linha que executa o wp-cron.php do WordPress
  1. Clique em Adicionar novo trabalho Cron.

No DirectAdmin

  1. Em Recursos Avançados, clique em Tarefas Cron (Cron Jobs).
  2. Preencha os campos de horário: Minuto */15 e o resto com *.
  3. No campo Comando, cole a mesma linha do cPanel e clique em Criar.

Qual intervalo usar

A cada 15 minutos atende a maioria dos sites: um post agendado sai, no máximo, 15 minutos depois do horário. Para lojas WooCommerce, que dependem de e-mails e estoques em dia, use a cada 5 minutos. Evite a cada hora, que pode atrasar uma publicação em até 59 minutos.

Para montar outro intervalo e ver exatamente quando a tarefa vai rodar, use nosso gerador de cron — ele já monta o comando do WP-Cron com o endereço do seu site.

Entendendo o comando

  • wget -q -O - acessa o endereço em silêncio, sem salvar arquivo nenhum.
  • wp-cron.php?doing_wp_cron é o endereço que executa as tarefas pendentes do WordPress.
  • >/dev/null 2>&1 descarta a saída — sem isso, o painel envia um e-mail a cada execução. Escreva exatamente assim, sem espaços em 2>&1.

Alternativa: chamar o PHP direto

Se o site está atrás de uma proteção que bloqueia o wget — como uma senha na pasta ou um firewall —, o cron pode executar o arquivo diretamente, sem passar pela internet:

/usr/local/bin/php -q /home/USUARIO/public_html/wp-cron.php >/dev/null 2>&1

Troque USUARIO pelo seu usuário do painel e ajuste o caminho se o WordPress estiver numa subpasta.

Como conferir se funcionou

  • Em Ferramentas → Saúde do site, o WordPress avisa quando há eventos agendados atrasados ou com falha.
  • Agende um post de teste para daqui a 20 minutos e veja se ele é publicado no horário.
  • Para ver todas as tarefas e o horário da próxima execução, o plugin gratuito WP Crontrol mostra a lista completa em Ferramentas → Cron Events.

Vários WordPress na mesma conta

Se você tem vários sites na mesma hospedagem, não agende todos no mesmo minuto — eles disparariam juntos e disputariam os recursos da conta. Distribua os horários: um site com 0,15,30,45 * * * *, outro com 5,20,35,50 * * * *, um terceiro com 10,25,40,55 * * * *.

Perguntas frequentes

O que é o WP-Cron?
É o sistema de tarefas agendadas do WordPress — ele publica posts agendados, envia e-mails de plugins, verifica atualizações e roda backups automáticos. Em vez de um relógio, ele depende das visitas: a cada acesso, verifica se há tarefas vencidas e as executa.

Por que meus posts agendados não são publicados?
Quase sempre porque o WP-Cron não rodou na hora: o site não teve visitas, o cache entregou páginas prontas sem acionar o WordPress, ou a requisição que o WordPress faz para si mesmo foi bloqueada. Substituir o WP-Cron pelo cron do servidor resolve.

É seguro desativar o WP-Cron?
Sim, desde que você crie a tarefa no cron do servidor logo em seguida. Desativado sem substituto, as tarefas agendadas param de rodar — posts agendados, e-mails e backups de plugins.

De quanto em quanto tempo o cron deve chamar o wp-cron.php?
A cada 15 minutos atende a maioria dos sites. Para lojas WooCommerce, a cada 5 minutos. Evite intervalos de uma hora, que podem atrasar uma publicação agendada em até 59 minutos.

Qual comando usar no cron do cPanel?
wget -q -O - https://seusite.com.br/wp-cron.php?doing_wp_cron >/dev/null 2>&1, trocando pelo endereço do seu site. O final >/dev/null 2>&1 deve ser escrito sem espaços — ele descarta a saída e evita um e-mail a cada execução.

Como saber se o cron do WordPress está funcionando?
Em Ferramentas → Saúde do site, o WordPress avisa quando há eventos agendados atrasados. Para ver cada tarefa e o horário da próxima execução, use o plugin WP Crontrol, em Ferramentas → Cron Events.

Isso funciona no DirectAdmin?
Sim. Em Recursos Avançados → Tarefas Cron, preencha os campos de horário — por exemplo, */15 no minuto e * nos demais — e use o mesmo comando do cPanel.

WordPress com tarefas que rodam na hora certa

Na hospedagem WordPress da Homehost, você agenda o cron pelo cPanel ou DirectAdmin em poucos cliques, com CloudLinux isolando os recursos de cada conta, servidores no Brasil e suporte em português para ajudar na configuração.

Ver planos de hospedagem WordPress

Conclusão

O WP-Cron é prático, mas depende de algo que o site não controla: as visitas. Desativá-lo e deixar o cron do servidor chamar o WordPress a cada 15 minutos resolve os posts agendados que não saem, os e-mails que atrasam e o processamento gasto à toa em cada acesso.

A configuração leva cinco minutos: uma linha no wp-config.php e uma tarefa no cPanel ou no DirectAdmin. Só não esqueça os dois detalhes que mais causam problema — fazer os dois passos em sequência e escrever o final do comando exatamente como >/dev/null 2>&1. Depois, confira em Saúde do site se os eventos estão em dia.

Este artigo foi útil?

Obrigado pela resposta!
Picture of Hugo Cabral

Hugo Cabral

Ganhe 30% OFF

Indique seu nome e e-mail,e ganhe um cupom de desconto de 30% para sempre na Homehost!