
🔧 Como corrigir o erro de agendamento falhado no WordPress: 3 métodos que funcionam
Programa o alarme para as oito da manhã porque um artigo importante é publicado na segunda-feira. Preparou-o durante o fim de semana, agendou-o no painel de administração do WordPress e foi dormir descansado. Chega terça-feira, abre o site e nada. Ao lado do título, no painel de administração, vê: «Missed schedule».
Parece-lhe familiar? Só no último ano, os fóruns de suporte do WordPress em russo discutiram este problema mais de trezentas vezes. O problema não é o seu painel de administração, nem o seu alojamento, nem os seus plugins. É uma peculiaridade arquitetónica do próprio WordPress.
Aqui estão três formas de resolver isto de uma vez por todas, da mais rápida à mais fiável. Sem invocações de cron, sem edições cegas ao ficheiro wp-config.php e sem a desculpa do «publico manualmente e pronto».
💡 Visão geral rápida:
- Instale o Missed Schedule Post Publisher para publicação automática de artigos perdidos (dois minutos para configurar)
- Substitua o WP-Cron pelo cron do servidor para uma solução radical e independente do tráfego
- Instale o WP Crontrol para supervisão manual (mostra todos os eventos cron e permite executar qualquer um manualmente)
Porque é que o WordPress falha o agendamento de artigos
O WordPress não usa um cron de sistema real. Em vez disso, depende de um mecanismo chamado WP-Cron, um pseudo-cron que não é acionado por um temporizador do servidor, mas sim quando um visitante acede ao site.
Funciona assim. Quando agenda um artigo para as 09:00, o WordPress escreve a tarefa na base de dados. Mas só pode executar essa tarefa se alguém visitar o site por volta das 09:00. Um visitante chega, o WordPress verifica a lista de tarefas e publica o artigo. Sem visitante, a tarefa fica pendente e você vê a mensagem «Missed schedule».
Para sites com 500 a 1.000 visitantes diários, o WP-Cron funciona de forma aceitável: é quase certo que alguém vai clicar no momento certo. Mas se tem um blogue recente, um projeto de nicho ou publica artigos durante a noite (no seu fuso horário), o WP-Cron falha regularmente. Junte a isto os plugins de cache: o WP Rocket, o W3 Total Cache ou a Cloudflare podem servir páginas em cache sem invocar o WordPress de todo, pelo que as tarefas cron não são executadas durante horas.
É por isso que o erro «Missed schedule» é sistémico e não aleatório. A solução não é reagendar o artigo manualmente, mas sim uma das três abordagens abaixo.
Os três métodos abordam cenários diferentes. O primeiro, instalar um plugin leve de publicação automática, resolve o problema para a grande maioria dos utilizadores em dois minutos. O segundo, mudar para o cron do servidor, oferece fiabilidade ao nível da infraestrutura, independentemente do tráfego. O terceiro, um painel de controlo manual, é útil para quem quer ver cada tarefa cron pelo nome e executá-la manualmente. Pode começar com o primeiro e adicionar o terceiro mais tarde para uma total tranquilidade.

Método 1: o plugin Missed Schedule Post Publisher, simples e fiável
A forma mais rápida de resolver esta questão é instalar um plugin especializado. Historicamente, usava-se o WP Missed Schedule, mas foi removido do diretório WordPress.org em 2017 e a versão do GitHub continha uma backdoor. Não o instale em circunstância alguma.
O substituto atual é o Missed Schedule Post Publisher. Este plugin tem um único propósito: verificar se um artigo agendado está bloqueado e publicá-lo no momento em que é detetado.
Como se diferencia do seu antecessor extinto:
Funciona via WP-Cron e simultaneamente através de visitas ao site; se o alojamento desativar o WP-Cron, o plugin muda automaticamente
Intervalo de verificação configurável: 5, 10, 15, 20, 30 ou 60 minutos
Impacto zero no desempenho (uma consulta leve à base de dados)
Compatível com WP Rocket, W3 Total Cache e Cloudflare
Não cria uma inundação de eventos cron extra; verifica apenas publicações perdidas
A instalação é padrão: Plugins → Adicionar Novo → pesquisar por «Missed Schedule Post Publisher» → Instalar → Ativar. Após a ativação, vá a Definições → Missed Schedule Post Publisher e escolha o seu intervalo de verificação. Para a maioria dos sites, 10 a 15 minutos é o ideal.
O plugin não requer supervisão manual. Instale-o, defina o intervalo e verifique o resultado após um dia: vá a Artigos → Todos os Artigos e confirme que a etiqueta «Missed schedule» desapareceu. A partir daí, funciona silenciosamente e com fiabilidade.
Para comparação, o antigo WP Missed Schedule (removido do diretório WordPress.org em 2017, e a versão do GitHub continha uma backdoor) tinha este aspeto no painel de administração. Se por acaso vir este plugin na sua lista de instalados, elimine-o imediatamente e substitua-o pelo Missed Schedule Post Publisher.

Método 2: cron do servidor em vez do WP-Cron, uma solução radical
Este método é mais técnico, mas oferece 100% de fiabilidade: desativa o WP-Cron e anexa a chamada ao wp-cron.php ao cron do sistema do servidor.
O cron do sistema é executado de acordo com o agendamento do sistema operativo, independentemente do tráfego do site. Se definir um intervalo de 5 minutos, a tarefa é executada exatamente em 5 minutos, mesmo que o site tenha zero visitantes.
O que precisa de fazer:
- Abra o
wp-config.phpe adicione a seguinte linha antes de/* That's all, stop editing! */:
1 define('DISABLE_WP_CRON', true);
Isto impede que o WordPress execute tarefas cron nas visitas ao site. As tarefas em si não desaparecem; permanecem na base de dados e aguardam uma chamada externa.
- No seu painel de alojamento, encontre a secção «Cron Jobs» (cPanel → Cron Jobs, ISPmanager → Agendador, ou equivalente). Crie uma tarefa com um intervalo de 5 a 10 minutos e este comando:
1 wget -q -O - https://your-site.com/wp-cron.php?doing_wp_cron > /dev/null 2>&1
Se o servidor suportar PHP CLI, aqui está uma alternativa que é mais rápida e não carrega o servidor web:
1 php /home/username/public_html/wp-cron.php
- Guarde a tarefa. Após 10 minutos, verifique os registos do cron; se não houver erros, o sistema está a funcionar.
Bónus: desativar o WP-Cron através de DISABLE_WP_CRON elimina o atraso parasita durante o carregamento das páginas para os visitantes. O WordPress deixa de acionar tarefas cron durante a navegação normal, por isso as páginas abrem um pouco mais rápido.
Este método tem uma desvantagem: o acesso às definições de cron não está disponível em todos os alojamentos. Alojamentos partilhados baratos por vezes bloqueiam a criação de tarefas cron. Nesse caso, recorra ao método 1; o Missed Schedule Post Publisher foi concebido precisamente para essas limitações e funciona sem o cron do sistema.
Método 3: inspeção manual via WP Crontrol, controlo total
O terceiro método é para quem quer ver tudo o que acontece nos bastidores. O WP Crontrol é um gestor de eventos cron diretamente no painel de administração. Não publica artigos por si só, mas mostra quais as tarefas agendadas, quando deveriam ter sido executadas e o que correu mal.
O que o WP Crontrol oferece:
Uma lista completa de todos os eventos cron com hook, argumentos e hora da próxima execução
A capacidade de executar qualquer evento imediatamente com um único clique
Editar e eliminar eventos cron
Adicionar novos eventos e agendamentos personalizados
Um aviso se o sistema cron não estiver a funcionar (o servidor não consegue ligar-se a si próprio)
Após a instalação, vá a Ferramentas → Eventos Cron. Verá uma tabela com todas as tarefas. Se um artigo estiver «bloqueado», encontre o evento com o hook publish_future_post, clique em «Executar Agora» e o artigo aparecerá no feed num segundo.
O WP Crontrol é especialmente útil para depuração: pode ver se um plugin criou centenas de eventos cron extra (acontece), se a fila de tarefas está congestionada ou se há um conflito entre plugins. A coluna «Próxima Execução» mostra quando o evento deve ser executado a seguir; se a data estiver no passado, a tarefa está bloqueada. A coluna «Recorrência» indica com que frequência o evento se repete; repetições anormalmente frequentes (a cada minuto) apontam quase sempre para um plugin problemático.
Por si só, no entanto, o WP Crontrol não previne o erro «Missed schedule»; apenas ajuda a diagnosticar e a resolver manualmente as consequências. Depois de executar manualmente uma publicação bloqueada, o artigo fica online instantaneamente, mas a situação repetir-se-á da próxima vez, a menos que resolva a causa ao nível do método 1 ou 2.

Melhor combinação: método 1 (plugin de publicação automática) + método 3 (WP Crontrol para supervisão). O publicador automático trata dos artigos perdidos e o WP Crontrol permite-lhe verificar de relance que a fila do cron está limpa e que tudo está a funcionar normalmente.
⁉️🤔 Perguntas frequentes
Porque é que o WordPress não usa um cron normal como qualquer outro sistema normal?
Os programadores do WordPress escolheram deliberadamente o modelo de pseudo-cron porque não requer configuração do lado do servidor. Um utilizador instala o WordPress em qualquer alojamento e a publicação agendada funciona de imediato, sem SSH ou edições de configuração. O preço dessa conveniência é a falta de fiabilidade em sites com pouco tráfego. O WP-Cron é executado em cada pedido ao site e, se não houver pedidos no momento certo, a tarefa não é executada. Esta é uma troca arquitetónica e, para artigos com hora crítica, não é suficiente.
Que método devo escolher se não percebo de servidores?
Missed Schedule Post Publisher (método 1). A instalação demora dois minutos através do painel de administração; a configuração consiste em selecionar um intervalo num menu suspenso. Sem código, sem SSH, sem edições ao
wp-config.php. O plugin deteta por si próprio se o WP-Cron está ativado no servidor e adapta-se.
O erro pode estar relacionado com o fuso horário do WordPress?
Sim, e verifique isto primeiro. Vá a Definições → Geral → Fuso Horário e certifique-se de que selecionou o fuso horário correto da cidade, em vez de um deslocamento UTC manual. Um deslocamento UTC+X não tem em conta a hora de verão; duas vezes por ano, o agendamento «desvia-se» uma hora e os artigos são publicados em horas inesperadas.
A cache afeta os artigos perdidos?
Diretamente, sim. Os plugins de cache (WP Rocket, W3 Total Cache, WP Super Cache) e as CDNs (Cloudflare) podem servir aos visitantes uma página HTML finalizada sem iniciar o núcleo PHP do WordPress. Se o WP-Cron não for chamado, as tarefas não são executadas. O Missed Schedule Post Publisher (método 1) contorna este problema funcionando tanto via cron como através de visitas ao site que ignoram a cache. O cron do servidor (método 2) não é afetado pela cache de todo.
O que devo fazer se o meu alojamento bloquear a capacidade de criar tarefas cron?
Use o método 1: Missed Schedule Post Publisher. Foi concebido exatamente para esta situação; funciona através do WP-Cron integrado e, se este estiver desativado, muda automaticamente para a verificação nas visitas ao site. Não perde funcionalidade; a verificação simplesmente acontece com um pouco menos de frequência (nas visitas, em vez de estritamente num temporizador).
O que instalar hoje
O problema do «Missed schedule» não se resolve com reagendamento manual; isso é como pintar por cima de uma fissura num cano. Precisa de um plugin de publicação automática (dois minutos e depois esquece) ou do cron do servidor (um pouco mais de tempo e depois esquece para sempre).
Se tem um blogue típico ou um site empresarial num alojamento médio, comece com o Missed Schedule Post Publisher. Defina um intervalo de 10 minutos, cinco cliques no painel de administração e o problema fica resolvido. Se quiser garantias ao nível da infraestrutura, configure o cron do sistema. Adicione o WP Crontrol para supervisão e só se lembrará dos artigos perdidos em conversas sobre «como as coisas eram antigamente».
Um dia após a instalação, entre no painel de administração e verifique o artigo agendado mais próximo. Se foi publicado a horas, o sistema está a funcionar. Se não, abra o WP Crontrol e veja se a tarefa publish_future_post está pendente sem ser executada; isso aponta para um problema de cron mais profundo no servidor, que o método 2 resolverá.



