Como Agendar Publicações no WordPress
Agende posts no WordPress, corrija Missed Schedule e configure o WP-Cron com um cron real do servidor para publicar no horário.
Para agendar uma publicação no WordPress, abra o painel Configurações → Resumo da publicação, clique na data Publicar: Imediatamente, escolha uma data e hora futuras e, em seguida, clique no botão Agendar que substitui Publicar.
Essa parte leva menos de um minuto. O que demora mais é descobrir por que a publicação que você colocou na fila para as 2h da manhã ainda estava lá na hora do café, sinalizada em vermelho como Agendamento Perdido.
O motivo remonta à forma como o WordPress executa tarefas agendadas: não com um temporizador real, mas a partir de carregamentos de página. Este guia aborda primeiro o caminho rápido de cliques e, depois, o mecanismo do WP-Cron e a correção permanente com cron no servidor, que elimina de vez os agendamentos perdidos.
Principais Conclusões
- O WordPress agenda publicações no fuso horário do seu site, que por padrão é UTC. Defina o fuso correto em Configurações → Geral antes de agendar, ou as publicações serão disparadas no horário local errado.
- O WordPress não usa um temporizador real do sistema; ele usa o WP-Cron, um pseudo-cron que só verifica tarefas pendentes quando alguém carrega uma página, de modo que um site com pouco tráfego ou fortemente cacheado pode perder completamente o momento agendado.
- A correção permanente é executar um cron real no servidor que requisite o
wp-cron.phpa cada 5–15 minutos e, então, adicionardefine('DISABLE_WP_CRON', true);aowp-config.php. Faça nessa ordem, ou as tarefas agendadas param silenciosamente. - Plugins como o MWW Scheduled Post Trigger só publicam as publicações perdidas depois que elas já estão atrasadas; um cron no servidor evita a falha logo de início.
- Plataformas gerenciadas como a Kinsta e o DreamPress da DreamHost já executam um cron em nível de servidor (normalmente a cada 15 minutos), então geralmente você não precisa configurar nada nesses casos.
Defina primeiro o seu fuso horário
O WordPress agenda publicações no fuso horário do seu site, que por padrão é UTC. Defina o fuso correto em Configurações → Geral antes de agendar, ou as publicações irão ao ar no horário local errado. Uma instalação nova armazena os horários em Tempo Universal Coordenado, então uma publicação que você coloca na fila para as “8:00” é disparada às 8:00 UTC, a menos que você tenha informado ao WordPress onde você está. Vá em Configurações → Geral, escolha uma cidade do seu fuso (entradas baseadas em cidades tratam o horário de verão automaticamente, ao contrário de offsets UTC fixos) e salve. Faça isso uma vez, antes de agendar qualquer coisa. As notas de instalação do plugin MWW Scheduled Post Trigger orientam a verificar essa configuração primeiro, e o FAQ dele remete de volta a ela quando as publicações ainda assim não aparecem.
Discover how at OpenReplay.com.
Como agendar uma publicação no editor de blocos?
Para agendar uma publicação no editor de blocos, abra o painel Configurações → Resumo, clique na data Publicar: Imediatamente, escolha uma data e hora futuras e, em seguida, clique no botão Agendar que substitui Publicar. O WordPress publica a postagem automaticamente naquele momento. Para confirmar, o botão superior exibe Agendar em vez de Publicar sempre que uma data futura estiver definida.
Editor clássico: na meta box Publicar, clique em Editar ao lado de Publicar imediatamente, informe a data e a hora, clique em OK e depois clique no botão Agendar.
Páginas funcionam da mesma forma. O controle de data fica no mesmo painel para ambos os tipos de conteúdo.
Gerenciar, desagendar e publicar antecipadamente
Para ver todas as publicações na fila, vá em Posts → Todos os Posts e clique no filtro Agendados acima da lista; a partir daí você pode editar, publicar antecipadamente ou desagendar qualquer item.
- Publicar antecipadamente: abra a publicação e clique em Publicar. Ela vai ao ar imediatamente, independentemente do horário agendado.
- Desagendar: volte o status da publicação para Rascunho. Isso a remove da fila sem publicá-la, e você pode continuar editando e reagendar depois. (Definir a data para “agora” e clicar em Publicar é publicar antecipadamente, não desagendar.)
- Agendar edições em uma publicação já publicada: por padrão não é possível, porque qualquer alteração em uma publicação no ar vai ao público no momento em que você salva. Para colocar uma atualização na fila, use um plugin como o PublishPress Revisions, que prepara uma revisão e a publica conforme um agendamento.
Por que as publicações agendadas do WordPress falham?
O WordPress não usa um temporizador real do sistema. Ele usa o WP-Cron, um pseudo-cron que só verifica tarefas pendentes quando alguém carrega uma página, de modo que, em um site de baixo tráfego, uma publicação agendada para as 2:00 pode não ser publicada até a chegada do próximo visitante. O Plugin Handbook é direto sobre o que isso significa na prática: coloque uma tarefa na fila para as duas da tarde, não receba visitantes até as cinco, e a tarefa fica parada até as cinco. Quando o gatilho finalmente dispara, a publicação já está atrasada e o WordPress a sinaliza em vermelho como Agendamento Perdido.
Duas condições de produção agravam o problema:
- Tráfego baixo ou inexistente. Como explica a SpinupWP, eventos agendados só disparam quando alguém aparece, então um site que fica silencioso por horas perderá tudo o que estava previsto naquela janela. Publicações noturnas em um blog pessoal são a vítima clássica.
- Cache de página inteira agressivo. Uma página cacheada é servida como HTML estático, sem executar PHP, então o WP-Cron simplesmente não roda. Sirva boa parte do seu tráfego a partir do cache e o WordPress mal será executado, o que significa que até um site movimentado pode parar de disparar eventos agendados. É uma causa comum em sites otimizados para desempenho.
A correção permanente: desative o pseudo-cron e execute um cron real no servidor
A correção permanente é executar um cron real em um temporizador fixo e então desativar o gatilho por carregamento de página. Trata-se de uma abordagem documentada, não de uma gambiarra: o Plugin Handbook aborda como integrar o WP-Cron ao agendador de tarefas do sistema exatamente para o caso em que uma tarefa precisa rodar no horário.
Siga esta ordem. Se você desativar o WP-Cron antes de haver um substituto em funcionamento, as tarefas agendadas param de disparar sem erro e sem aviso: publicações, backups e verificações de atualização ficam todos em silêncio até você perceber.
Passo 1: adicione um cron job real. No módulo Cron Jobs do cPanel ou no crontab do seu servidor, requisite o wp-cron.php em um intervalo. Um padrão confiável é a cada 5–15 minutos. Esta forma com wget -q -O - é a da Kinsta:
*/15 * * * * wget -q -O - https://example.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1
O */15 faz com que rode a cada 15 minutos; substitua example.com pelo seu domínio. A forma canônica do Handbook usa wget --delete-after http://YOUR_SITE_URL/wp-cron.php no mesmo intervalo. Qualquer uma funciona; escolha a que sua hospedagem suportar.
Passo 2: desative o gatilho por carregamento de página. Uma vez que o cron do servidor esteja funcionando, adicione esta linha ao wp-config.php, acima do comentário /* That's all, stop editing! */:
define('DISABLE_WP_CRON', true);
Plugin como paliativo. Plugins como o MWW Scheduled Post Trigger ou o Missed Scheduled Posts Publisher só publicam as publicações perdidas depois que elas já estão atrasadas, e o próprio FAQ do MWW o descreve como um paliativo até que você e sua hospedagem descubram por que o cron não está disparando. Um cron real no servidor previne a falha em vez de reagir a ela. Não confie em nenhum plugin isolado como garantia, já que alguns falham em determinadas configurações de hospedagem.
| Plugin paliativo | Cron real no servidor (recomendado) | |
|---|---|---|
| O que faz | Publica postagens já perdidas na próxima visita/intervalo | Dispara o wp-cron.php em um temporizador fixo, independentemente do tráfego |
| Melhor para | Blogs pessoais de baixo tráfego, desbloqueio rápido | Produção, sites cacheados, de baixo tráfego ou instalações multisite |
| Previne a falha? | Não, reage depois | Sim, é proativo |
| Configuração | Instalar e ativar | Editar o wp-config.php + adicionar entrada no cron (ou usar hospedagem gerenciada) |
Hospedagens gerenciadas. A Kinsta executa um cron em nível de servidor em todos os sites a cada 15 minutos, e o DreamPress da DreamHost desativa o WP-Cron por padrão e o substitui por um cron do sistema no mesmo intervalo. Em plataformas como essas, geralmente você não precisa configurar nada. Consulte a documentação da sua hospedagem antes de desativar o WP-Cron.
Verifique e force a execução com o WP-CLI. Em um servidor com SSH, wp cron event list mostra os eventos agendados e seus próximos horários de execução, e wp cron event run --due-now força imediatamente todos os eventos atrasados, que é a maneira mais rápida de confirmar que uma publicação travada será publicada.
Considerações finais
Agendar uma publicação no WordPress é um caminho de cliques de um minuto, mas manter essas publicações confiáveis é uma questão de servidor. Defina seu fuso horário em Configurações → Geral e coloque as publicações na fila pelo painel Resumo. Se publicações agendadas exibirem Agendamento Perdido, pare de confiar no pseudo-cron por carregamento de página: aponte um cron real do servidor para o wp-cron.php a cada 5–15 minutos e depois adicione define('DISABLE_WP_CRON', true);. Essa única mudança transforma o agendamento de “melhor esforço” em algo confiável, mesmo em um site silencioso ou cacheado.
Perguntas Frequentes
Devo desativar o WP-Cron se estiver em uma hospedagem WordPress gerenciada, como Kinsta ou DreamHost?
Não. Em plataformas gerenciadas como a Kinsta e o DreamPress da DreamHost, geralmente você não precisa desativar o WP-Cron por conta própria, porque essas plataformas já executam do lado delas um cron em nível de servidor (normalmente a cada 15 minutos) que dispara o wp-cron.php independentemente do tráfego. Consulte primeiro a documentação da sua hospedagem — muitos planos gerenciados configuram isso automaticamente, e duplicar não traz benefício algum. Só mexa no wp-config.php se sua hospedagem confirmar que não executa um cron no servidor.
Qual é a diferença entre um plugin de agendamentos perdidos e um cron real no servidor?
Um plugin de agendamentos perdidos, como o MWW Scheduled Post Trigger ou o Missed Scheduled Posts Publisher, só publica as postagens depois que elas já estão atrasadas, reagindo no próximo carregamento de página ou intervalo, enquanto um cron real no servidor dispara o wp-cron.php em um temporizador fixo, independentemente do tráfego, e evita que a falha aconteça. Plugins são um paliativo rápido para blogs pessoais de baixo tráfego; um cron no servidor é a correção proativa para instalações em produção, cacheadas ou multisite.
Por que minha publicação agendada foi publicada no horário errado do dia?
Uma instalação nova do WordPress armazena os horários em Tempo Universal Coordenado (UTC), então uma publicação agendada para as '8:00' é disparada às 8:00 UTC, a menos que você defina seu fuso em Configurações e depois Geral. Escolha uma entrada baseada em cidade em vez de um offset UTC fixo, porque as entradas de cidade se ajustam automaticamente ao horário de verão. Configure isso uma vez antes de agendar qualquer coisa para manter todas as publicações futuras no seu relógio local.
Como posso verificar se minhas publicações agendadas realmente serão publicadas?
Em um servidor com acesso SSH, execute wp cron event list para ver todos os eventos agendados e seus próximos horários de execução e, em seguida, execute wp cron event run --due-now para forçar a execução imediata de todos os eventos atrasados. Essa dupla de comandos do WP-CLI é a maneira mais rápida de confirmar que uma publicação travada será publicada e de diagnosticar se o WP-Cron está disparando. Sem SSH, o plugin WP Crontrol expõe a mesma lista de eventos pelo painel administrativo.
O cache de página inteira faz com que publicações agendadas sejam perdidas?
Sim, o cache de página inteira agressivo é uma causa comum e frequentemente ignorada de agendamentos perdidos. Uma página cacheada é servida como HTML estático, sem executar PHP, então o WP-Cron nunca roda nessas requisições, mesmo com tráfego alto. Sirva boa parte do seu tráfego a partir do cache e o WordPress mal será executado, de modo que os eventos agendados param de disparar. A correção é a mesma dos sites de baixo tráfego: desative o gatilho por carregamento de página e execute um cron real no servidor.
Gain Debugging Superpowers
Unleash the power of session replay to reproduce bugs, track slowdowns and uncover frustrations in your app. Get complete visibility into your frontend with OpenReplay — the most advanced open-source session replay tool for developers.
Star on GitHub12k