Agendamento Perdido no WordPress! Como resolver?
Uma das funções do WordPress que mais facilita nossas vidas é o agendamento de posts. Com ele podemos criar nossas publicações e agendá-las para irem ao ar em um horário que seja mais conveniente para nosso público alvo. Dessa forma nossos posts podem ser publicados até enquanto estamos dormindo!
Nas primeiras vezes é comum você ficar “vigiando” se o post vai ser publicado mesmo e tudo vai sair nos conformes, mas depois de 2 ou 3 publicações com sucesso você começa a ficar mais tranquilo e deixa de verificar minuto-a-minuto se o post está o ar.
Aqui é que mora o perigo, vez ou outra a instalação do WordPress apresenta o famoso bug do Agendamento Perdido (Schedule Missed). Você prepara suas publicações, agenda e quando vai ver…
A partir deste momento nenhum outro agendamento em seu site funciona!
Esse bug do WordPress não tem situação especial para acontecer nem versão específica, ele pode tanto aparecer após uma atualização de versão como também pode aparecer da noite pro dia no seu site que estava perfeito até ontem.
Na internet existem diversas “soluções” para o problema. As 2 mais tentadas na comunidade são as seguinte:
Substituição do arquivo wp-cron.php
Dizia-se que a substituição do arquivo pelo da versão 2.6.5 faria com que os agendamentos voltassem a ser respeitados. Alguns usuários dizem que este método funciona.
Alteração no wp-config.php
Uma outra alternativa muito tentada é a inclusão da linha
define('ALTERNATE_WP_CRON', true);
direto em seu arquivo de configuração do WordPress. Assim como na primeira alternativa, alguns usuários dizem ter sucesso com isso e outros não.
A solução final
Eu mesmo já passei por esse problema duas vezes no mesmo site. Tentei ambas as possibilidades acima dentre outras como configuração de CRON direto no servidor e etc mas nada resolveu o problema… exceto nosso amigo sLa, desenvolvedor do plugin WP Missed Schedule.
O plugin é bem simples e não requer nenhuma configuração por parte do usuário, basta ativá-lo e já está funcionando. Após ativado ele verifica minuto-a-minuto se há algum post em seu site com o status de agendamento perdido, caso haja ele se encarrega de forçar – e efetivamente – fazer a publicação.
Aos que se preocupam com o consumo do servidor podem ficar tranquilos, pois a cada minuto o plugin pega 5 posts da sua lista e faz a verificação, logo não há sobrecarga.
E uma dica final a respeito do plugin é que ao ativá-lo ele vai publicar todos os posts antigos que já estão com o agendamento perdido, não só os futuros posts.
É, o calcanhar de Aquiles do WP é justamente o Cron. A maneira que ele lida com o Cron, por tentar ser compatível com todos os servidores, é horrível.
Atualmente, tudo que vc faz no site dispara o Cron. Além das programações normais que ele faz no Cron (para checar plugins, por exemplo), a CADA INTERAÇÃO com a página, seja feita pelo administrador ou pelo visitante, ele dispara o Cron.
Ou seja: cada vez que vc muda de página no painel adm, ele dispara. Cada vez que alguém visita outra página do seu site, ele dispara.
Solucionamos isso na empresa onde trabalhava personalizando o acesso ao Cron, uma vez que nosso servidor permitia o acesso ao mesmo.
Nunca entendi pq o WP não tem a opção de desligar esse acesso constante ao Cron.
Sim, o Cron hoje é uma das coisas que precisam urgente de uma revisão no WordPress. Existem desenvolvedores que optam por não o utilizarem e usam alternativas via funções ou até mesmo com agendamento de tarefas no cron do servidor.
O problema é que alguns servidores cobram por tarefa agendada e no geral não é todo mundo que conhece bem o WordPress a ponto de se aventurar a customizar ou tentar alternativas para o cron.
Mto bom. parabens!!!
Parabéns pelo post!
Opa, muito bom. Deu certo!
Ótimo post, parabéns!
Muito bom mesmo, me ajudo muito 🙂
Tô aqui depois de um bom tempo rs pra perguntar o seguinte: essa solução traz de volta o agendamento, mas ele não funciona mais no compartilhamento automático via plugin, como o do Jetpack.
Sabe de alguma solução que não só traga o agendamento de volta como permita que ele volte a funcionar nos compartilhamentos?
Comigo deu na versão 4.4 do WordPress
Mas colocando a alteração no wp-config.php que vc menciona resolveu!!!
Valeu! Vou testar aqui.
Obrigado pela dica!
Utilizei um outro plugin com a mesma função e deu certo. Obrigado!