こんにちわ、PHPエンジニアのエンジニア婦人(@naho_osada)です。
PHPエンジニアとして9年~の経験があります。
WordPressは予約投稿の仕組みがありますね。
これがどうも、バージョンアップをしてから正常動作していないことに気付きました。予約時間を設定すると「-9時間」になる。
午前10:00公開設定にしたいのに、午前1:00公開設定になってしまう…
+9時間で午後7:00予約にすれば午前10:00公開になりますが、それでは根本的解決にならないので、調べてみました。

原因は「特になし」
まずはWordPressの設定画面から。
「設定>一般」の中に「タイムゾーン」の設定をするところがあります。
初期構築時に「東京」になっているはずだけど、バージョンアップで変わってしまったのか?

特にそのようなことはありませんでした。東京のままでした。
私の制作したWordPressテーマ「Nao Light-NAOT-」では、念のためテーマ内でもタイムゾーンの設定をしています。他サイトのRSSを読み込んでその時刻を表示しようとするときなどに表示時刻が-9時間されてしまうことがあったからです。(参考:WordPressで時差が出た!?date関数を疑って!|エンジニア婦人ノート)
これが何かの改修をしたときに消してしまった?記憶にないけど…と思ってみてみますが、こちらも特に問題なし。
date_default_timezone_set('Asia/Tokyo');
では、なぜ予約投稿の日時設定が正常に動作しないのか?
結論「WordPressの設定画面から再設定が必要」
「WordPressのリンクがおかしいときは、管理画面の「設定>パーマリンクの設定」を開き、何もせずに「変更を保存」をクリックして、パーマリンクの再設定をしましょう。」
よくある話です。何かの操作をしてリンクが存在しなくなったらまずやってみようという。
この予約時間も同じでした。
「設定>一般」でタイムゾーンなど特に触らず「変更を保存」をクリックする。
これで予約投稿の日時が日本時間で正常動作するようになりました。
バージョンアップでデータベースの設定情報が一部初期化されたのかもしれませんね。設定上は東京でも正しく反映するには再設定がいる場合があった、と。
(更新時に「データベースを更新しています…」という表示があった気がする)
まとめ
- WordPressのバージョンアップで予約投稿が正常に動作しなくなったら、「設定>一般」で何もせずに「変更を保存」をクリックしてみよう!