先日からあるWPブログの予約投稿が失敗するようになりました。

何か変更した覚えがないので、不思議でした。

予約投稿失敗でググると原因はいろいろありました。

例えば、

・プラグイン
・ベーシック認証
・キャッシュ
・タイムゾーン
・cron

私が過去に予約投稿失敗したものは、プラグインです。

ただ、予約に関係しそうなプラグインを使ってないと思うのですが、自分が知らないだけで使っている可能性もあるので、試しにプラグインをすべてはずして予約投稿したのですが、やはり失敗しました。ですから今回はプラグインが原因ではありません。

次にベーシック認証。これはやってないのでパス。キャッシュの処理は何もしてないので、パス。

で、タイムゾーンですが、これは日本にしているので問題なし。

残るはcronですが、cronは何もしてないのにと思ったんですが、実は問題はcronでした。

というか、サーバーが問題なんです。サーバーが遅いので(安い海外サーバー)cronの設定時間が、短すぎて予約投稿で失敗していたようです。

変更したのは、wp-includesにあるcron.phpです。

$cron_request = apply_filters( ‘cron_request’, array(
‘url’ => add_query_arg( ‘doing_wp_cron’, $doing_wp_cron, site_url( ‘wp-cron.php’ ) ),
‘key’ => $doing_wp_cron,
‘args’ => array(
‘timeout’ => 5,
‘blocking’ => false,
/** This filter is documented in wp-includes/class-wp-http-streams.php */
‘sslverify’ => apply_filters( ‘https_local_ssl_verify’, false )
)
) );

変更前
‘timeout’ => 0.01,

変更後
‘timeout’ => 5,

タイムアウトの数字をいくつに変えるかは、サーバー環境によって違うと思いますが、大きめにしておけば、タイムアウトする前に予約投稿できるはずです。

まさか、cronとは思いませんでしたが、原因と対策ができてよかったです。

cron.phpの変更については、下記サイトを参考にしました。感謝です^^。

参考サイト
http://wp.nyumon.club/8177.html