A versão nova do WordPress (2.9) saiu, logo em seguida saiu um pacote de correções (2.9.1) e ainda assim alguns blogs continuam enfrentando um problema chato demais: o WP “esquece” de publicar os posts agendados.
Na verdade, há mais problemas além desse, mas não são tão evidentes, como a perda da habilidade de fazer pings e trackbacks.
Não é muito difícil de “solucionar” este problema, contudo. Solucionar entre aspas, porque na verdade é um remendo que pode ter outros efeitos colaterais, mas que de maneira geral resolve bastante bem.
Explicação curta e grossa
Edite seu arquivo wp-config.php e adicione a seguinte linha de código nele:
define('ALTERNATE_WP_CRON', true);
Pronto, seu problema deve estar resolvido.
Explicação mais técnica
Para entender o problema e por que a solução acima funciona, é necessário entender como funciona o mecanismo de publicação de posts em data futura.
De fato, a publicação dos posts é apenas uma das funcionalidades providas por um módulo do WordPress chamado de WP-Cron, ou simplesmente Cron doravante.
A cada vez que o WP é carregado (ou seja, que uma página do blog é acessada) o mecanismo da Cron verifica se está na hora de executar alguma tarefa ou não. Caso seja hora, a Cron faz uma chamada em HTTP (como se fosse um visitante “especial”) para um script específico do WordPress que executa em segundo plano as tarefas agendadas. Tem que ser assim porque não seria viável a cada execução da Cron (que pode demorar, algumas tarefas têm potencial para um alto nível de complexidade) o visitante ter de esperar pelo fim do processamento para só então começar a visualizar a página que realmente lhe interessa.
Para fazer essa chamada ao script da Cron o WP usa um mecanismo interno que tenta de várias maneiras acessar o blog, sendo CURL a primeira opção, e fazendo “fallbacks” para outros métodos (como fscokopen). É uma tarefa deveras complexa, e com tantas variáveis que fica muito difícil de rastrear o problema sem ser especialista em WordPress nem ter acesso direto ao blog com problema, que pode ou não ter a ver com firewall, servidor, etc.
Quando você inclui a linha de código acima no wp-config.php, você está instruindo o WP a usar um método alternativo de execução da Cron, que em vez de fazer a requisição HTTP direta usa um mecanismo de redirecionamentos que no fim das contas resolve satisfatoriamente o problema (é melhor uma gambiarra que funcione do que um programa lindo e maravilhoso que não dá o resultado esperado).

Twitter Comment
Como resolver o problema dos posts agendados do WP 2.9 – [link to post] (via @portofacil)
-