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.
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
- No cPanel, na seção Avançado, clique em Trabalhos Cron.
- Em Configurações comuns, escolha A cada 15 minutos — ou preencha os campos com
*/15 * * * *.
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 - Clique em Adicionar novo trabalho Cron.
No DirectAdmin
- Em Recursos Avançados, clique em Tarefas Cron (Cron Jobs).
- Preencha os campos de horário: Minuto
*/15e o resto com*. - 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>&1descarta a saída — sem isso, o painel envia um e-mail a cada execução. Escreva exatamente assim, sem espaços em2>&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.
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 WordPressConclusã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.