WordPressで予約公開ができない場合、原因は色々とあります。
このことは色んなサイトで紹介されています。
でも、たまに公開に失敗するなど原因がよくわからない不具合も起こります。
WordPressの予約投稿は、
一定のアクセスがないと実行されないという仕様になっています。アクセスがないブログは予約投稿ができないといっても過言ではありません。
という話まであり、正直Wordpressの予約公開はあまり信用できません。
ということで、解決方法として、こんな感じのプログラムをheader.phpの先頭に入れてみました。
[PHP]
if(is_home() || is_front_page()){
//予約の投稿のみ取得(MAX20件)
$get_posts = get_posts(array(
"posts_per_page" => 20,
"post_type" => "any",
"post_status" => "future"
));
if($get_posts){
foreach($get_posts as $get_post){
//現在が予約日時を過ぎている場合
if($get_post->post_date < current_time("Y-m-d H:i:s")){
//公開処理
$save_post = array(
"ID" => $get_post->ID,
"post_status" => "publish"
);
wp_update_post($save_post);
}
}
}
}
[/PHP]
※トップページアクセスの場合のみ反応するようにしています。
post_statusがfutureになっている記事だけ取得し、予約日時が過ぎているものだけ、publishに更新するという簡単なプログラム
ちゃんと動いているし、負荷もそれほどかからないし問題なさそう。(※動作に責任は持ちません)