WordPressでは記事の公開予定日時を事前に設定して予約投稿することができます。書き溜めておいた記事を定期的に公開するなど、とても使い勝手が良い機能です。
ところが、Wordpress 2.7から予約投稿が失敗するという話が出てきました。その対策には”wp-includes/cron.php”をそれ以前のバージョンのcron.phpに置き換える方法があります。しかし、これも応急処置としては有効なものの、あまり建設的な解決方法とは言えません。
その不具合の一つの原因はcron.phpのタイムアウト設定にありました。
“\wp-includes\cron.php”の 229行目(WordPress 2.9の場合)、
wp_remote_post( $cron_url, array(‘timeout’ => 0.01, ‘blocking’ => false, ‘sslverify’ => apply_filters(‘https_local_ssl_verify’, true)) );
この0.01を5〜10など大きめの数字に変えます。タイムアウト時間がたった0.01秒では通常の共用サーバーじゃ厳しいです。それでも数秒もあれば十分でしょう。
wp_remote_post( $cron_url, array(‘timeout’ => 5, ‘blocking’ => false, ‘sslverify’ => apply_filters(‘https_local_ssl_verify’, true)) );
大体のケースはこれで解決すると思います。動作報告ください。
[参考(英語)]
WordPress › Support » “Schedule Missed” Issue
#8923 (cron timeout is too short) – WordPress Trac