WP-Cron é o sistema de tarefas agendadas do WordPress — responsável por backups automáticos, publicação de posts agendados, limpeza de transients, renovação de certificados em alguns plugins e emails de WooCommerce. Quando o WP-Cron falha silenciosamente, muitas funcionalidades param de funcionar sem aviso. Entender como funciona e como diagnosticar problemas é essencial para a manutenção WordPress.
Como o WP-Cron funciona (e porque é diferente de cron real)
WP-Cron não é um cron job real do sistema operativo. É um sistema pseudo-cron que funciona assim:
- Quando um visitante acede ao site, o WordPress verifica se há tarefas agendadas em atraso
- Se houver, executa-as antes de servir a página
- Se o site não tiver tráfego, as tarefas não correm
Este design tem implicações importantes:
- Sites com pouco tráfego: as tarefas agendadas podem atrasar horas ou não correr de todo se não houver visitas
- Performance: em sites com muitas tarefas agendadas, o WP-Cron pode adicionar latência a algumas requisições
- Timing impreciso: uma tarefa agendada para as 09:00 pode correr às 09:47 se o primeiro visitante do dia aparecer nessa hora
O que depende do WP-Cron
Muitas funcionalidades críticas dependem do WP-Cron funcionar regularmente:
- Publicação de posts agendados
- Backups automáticos (UpdraftPlus, BackupBuddy, etc.)
- Cancelamento de encomendas WooCommerce com referências Multibanco expiradas
- Emails automáticos WooCommerce (lembretes de carrinho abandonado, etc.)
- Limpeza de transients e sessões expiradas
- Verificação de atualizações de plugins
- Algumas funcionalidades de plugins de SEO (re-crawl, etc.)
Como diagnosticar problemas com WP-Cron
WP-CLI (método mais rápido)
# Ver todas as tarefas agendadas
wp cron event list
# Ver tarefas em atraso
wp cron event list --fields=hook,next_run_relative --format=table
# Executar todas as tarefas em atraso manualmente
wp cron event run --due-now
# Testar se WP-Cron está funcional
wp cron test
Plugin WP Crontrol
WP Crontrol (gratuito, repositório oficial) oferece interface visual de todas as tarefas agendadas. Permite ver, adicionar, editar e executar tarefas manualmente. Útil para diagnóstico sem acesso SSH.
A solução: substituir WP-Cron por cron do sistema
Para sites críticos, a solução recomendada é desativar o WP-Cron pseudo-cron e usar um cron job real do servidor. Este cron chama o WP-Cron a intervalos definidos, independentemente do tráfego do site.
Passo 1: desativar WP-Cron nativo
Adicione ao wp-config.php:
define('DISABLE_WP_CRON', true);
Passo 2: criar cron job do sistema
Via crontab (SSH) ou cPanel → Cron Jobs, adicione:
# Correr WP-Cron a cada 5 minutos
*/5 * * * * curl -s https://seusite.pt/wp-cron.php?doing_wp_cron > /dev/null 2>&1
# Alternativa com WP-CLI (mais eficiente, sem HTTP request)
*/5 * * * * /usr/local/bin/wp cron event run --due-now --path=/var/www/wordpress --quiet
A abordagem via WP-CLI é preferível — evita um HTTP request externo e é mais eficiente em recursos.
Tarefas agendadas acumuladas: como limpar
Em sites com histórico de problemas de cron, podem acumular-se centenas ou milhares de tarefas em atraso na tabela wp_options (onde o WP-Cron armazena as tarefas). Isto pode causar lentidão na base de dados.
Via WP-CLI para ver tarefas pendentes:
wp cron event list | wc -l
Se houver um número anormalmente grande (centenas), investigue qual plugin está a agendar tarefas excessivamente. Frequentemente é um plugin de backup que falhou repetidamente e continua a reagendar.
WP-Cron e a manutenção mensal
Verificar o estado do WP-Cron deve ser parte da checklist mensal. Especificamente:
- Confirmar que backups automáticos estão a correr (verificar data do último backup)
- Verificar se há tarefas em atraso significativo
- Para sites WooCommerce: confirmar que encomendas expiradas são canceladas automaticamente
Uma forma simples de verificar: confirmar no plugin de backup que existe um backup recente. Se o último backup tem mais de 48h num site com backups diários configurados, o WP-Cron pode estar com problemas.
Quer que monitorizemos a saúde técnica dos sites WordPress dos seus clientes?
O nosso serviço de manutenção WordPress inclui verificação mensal de WP-Cron, backups e todas as tarefas automatizadas.
Falar connosco