WP-Cron
WP-Cron WordPress agenda tarefas como publicação programada e backups. Veja como funciona, suas limitações e como substituir por cron real do servidor.
WP-Cron WordPress é o sistema interno de agendamento de tarefas do CMS, responsável por executar eventos como publicação programada de posts, atualização automática de plugins, envio de notificações por email, backups agendados e checagens de saúde do site. Apesar do nome inspirado no cron do Linux, o WP-Cron tem uma diferença crítica: ele só dispara quando alguém visita o site. Sem visitas, sem execução.
O que é WP-Cron
O WP-Cron é um pseudocron embutido no core do WordPress desde 2007. Plugins, temas e o próprio core agendam funções para rodar em momentos específicos: agora, daqui a uma hora, todo dia às 3h, semanalmente. O WordPress mantém uma fila dessas tarefas no banco de dados, dentro da opção cron na tabela wp_options.
A diferença para o cron tradicional do sistema operacional é fundamental. O cron real do Linux, agendado em /etc/crontab, é executado pelo próprio servidor em horários precisos, mesmo se o site estiver sem tráfego. O wp cron wordpress, ao contrário, é checado a cada page load — quando alguém abre uma página, o WordPress verifica se há tarefas vencidas e executa as pendentes.
Essa decisão de design tem motivo prático: muitos usuários WordPress estão em hospedagens compartilhadas que não dão acesso a configurar cron real do servidor. Embutir o agendador no próprio CMS garante que tarefas como publicação programada funcionem em qualquer hospedagem, mesmo nas mais limitadas. O preço é precisão: tarefas só rodam quando há tráfego.
Para sites com tráfego constante, o WP-Cron funciona razoavelmente bem. Para sites com tráfego baixo ou intermitente, vira problema sério: posts agendados podem não ser publicados, backups podem não rodar, emails podem não ser enviados. Em sites com tráfego muito alto, vira outro problema: cada visita dispara checagens desnecessárias e gera carga adicional no servidor.
Como funciona o WP-Cron
Quando você quer agendar tarefas wordpress, usa a função wp_schedule_event. Por exemplo, para rodar uma função todo dia: wp_schedule_event(time(), ‘daily’, ‘minha_tarefa’). O WordPress salva isso na fila e executa daily quando a hora chegar — ou na primeira visita após esse horário.
A frequência aceita os intervalos padrão hourly, twicedaily, daily e weekly, mas você pode registrar intervalos custom via filter cron_schedules. Plugins de cache, segurança e SEO costumam ter dezenas de tarefas agendadas — o WP-Cron de um site com muitos plugins pode acumular 50 ou mais entradas na fila.
Quando uma página carrega, o WordPress checa wp-cron.php. Se há tarefas pendentes, dispara uma requisição assíncrona para o próprio site (via wp_remote_post) acionando wp-cron.php em segundo plano. Isso evita que o usuário visitante tenha que esperar a tarefa rodar — mas ainda gera uma requisição extra.
Para inspecionar a fila, use plugins como WP Crontrol. Eles mostram todas as tarefas agendadas, próxima execução, função que será chamada, e permitem disparar manualmente ou cancelar tarefas. É a primeira parada quando algo “deveria estar rodando mas não está”. Combine com hooks customizados via hooks WordPress para criar agendamentos próprios.
Limitações do WP-Cron
A limitação maior é a dependência de tráfego. Site sem visita por 12 horas durante a noite? As tarefas que deveriam rodar entre 1h e 5h só rodam de manhã, quando alguém acessa. Para sites com agendamento crítico — backups noturnos, sincronização com sistemas externos, envio de newsletter em horário específico — isso é inaceitável.
A segunda limitação é a sobrecarga em sites com tráfego alto. Cada visita dispara verificação de fila. Em sites com 100 mil pageviews diários, isso gera 100 mil checagens. Mesmo que individualmente leves, somam carga significativa. O servidor poderia estar entregando páginas em vez de rolar a fila.
A terceira limitação é a precisão temporal. WP-Cron não dispara em horários exatos. Uma tarefa agendada para 3h pode rodar às 3h05, 3h17 ou 4h22 — depende de quando alguém visitar. Para tarefas de auditoria, relatórios diários ou integrações que esperam horários precisos, essa imprecisão atrapalha.
A quarta limitação é a falha silenciosa. Se uma tarefa agendada quebra (por causa de timeout PHP, erro fatal, plugin desativado), ela pode ficar pendente indefinidamente sem aviso. Sites WordPress sem monitoramento podem ter dezenas de tarefas “travadas” que ninguém percebe — incluindo backups que pararam de rodar há semanas.
A quinta limitação é segurança. O endpoint wp-cron.php é público e pode ser disparado por qualquer um via requisição HTTP direta. Atacantes às vezes usam isso para causar carga artificial no servidor (DDoS de baixo custo). A solução é proteger o arquivo via .htaccess ou desabilitar o WP-Cron padrão.
Como substituir por cron real do servidor
O caminho profissional é desabilitar o WP-Cron e configurar o cron do sistema operacional para chamar wp-cron.php em intervalos regulares. Isso transforma o WP-Cron em um cron real, com horários precisos, sem depender de tráfego e sem sobrecarregar visitantes.
O primeiro passo é desabilitar o cron embutido. No wp-config.php, adicione: define(‘DISABLE_WP_CRON’, true). Isso impede que o WordPress dispare wp-cron.php a cada page load. As tarefas continuam na fila, mas não são executadas até que algo chame o endpoint manualmente.
O segundo passo é configurar o cron do servidor. Em sistemas Linux, edite o crontab com crontab -e e adicione uma linha como: */5 * * * * wget -q -O – https://seusite.com/wp-cron.php?doing_wp_cron > /dev/null 2>&1. Isso dispara o WP-Cron a cada 5 minutos, garantindo precisão temporal e independência de tráfego. Em hospedagens com cPanel, o painel costuma ter interface gráfica para agendar isso.
O terceiro caminho, mais robusto ainda, é usar WP-CLI via SSH: */5 * * * * cd /var/www/html && wp cron event run –due-now. Roda diretamente no servidor, sem requisição HTTP, mais rápido e sem expor wp-cron.php publicamente. É o padrão recomendado para sites profissionais com acesso SSH.
Independente do método escolhido, monitore as tarefas. Combine com otimização de performance e backup automatizado para garantir que o agendamento real está rodando como esperado. Para sites profissionais que precisam dessa configuração sem montar tudo manualmente, a FULL Services entrega a stack profissional WordPress com WP-Cron já desabilitado e cron real do servidor configurado em frequência adequada — backup, otimização e tarefas críticas rodando em horário preciso, sem depender de visitas para acontecer.
Termos relacionados
wp-config.php
wp-config.php é o arquivo de configuração principal do WordPress. Veja constantes essenciais, como editar com…
WP-CLI
WP-CLI WordPress permite gerenciar plugins, usuários e banco via terminal. Veja como instalar, comandos essenciais…
Performance WordPress
Performance WordPress combina cache, CDN, otimização de imagens e código limpo. Veja os pilares e…
Backup WordPress
Backup WordPress é a cópia de segurança do site que permite restaurar tudo após ataque…














