WEB DESIGN

wordpressのプラグイン作成中date();でイラッとした話

2024-03-17 18:33
Webデザイン

wordpressのプラグインを作っています。

初めてなので、幕末の今日なにがあったかを表示する簡素なプラグインです。
小間物屋歴創で試験運用しています。

今日の日付を取得してcsvに登録してある出来事一覧の日付と比較

一致してたら「今日は井上聞多の誕生日です(天保11年)」と表示するプラグインです。

割と簡単に作れて、大枠はあっさりと完成。

その日は3月14日で「聞多・長嶺・大和が京都に到着した日です。(1863年3月14日)」と表示されていました。

「やっぱ海軍トリオ仲良しだなぁ」などとニヤつき、22時ごろ就寝。

翌朝サイトを確認すると……。

2024年3月15日 朝の表示

まだ表示されてる???
なんで???

ピンときたのがタイムゾーン。
そう、ここは日出処国。
メリケンさんは、まだ昨日の夜なのだ。

案の定、phpにdate_default_timezone_set('Asia/Tokyo');と書いたら消えた。

サーバの設定か?と思ってphp.iniを確認しても「Asia/Tokyo」になってる。

とりあえず消えたからいいけど、気持ち悪いので調べてみたら、wordpressの仕様でdate();を使うとUTC(世界標準時)の日時が取得されるようです。

かわりにwordpress独自のwp_date();を使うと現在の日本の日時が取得できました。

正確にはwordpressの「設定>一般設定>タイムゾーンで設定したタイムゾーンの日時」が取得できます。

$today = wp_date('Y-m-d');これでばっちり!

date_default_timezone_set('Asia/Tokyo');を消しても、ちゃんと現在の日本の日時が取れてます。

余談ですが、作業中「今日が8月20日の体でテストしたい」ときどうしてますか?
わたしは


// 今日の日付を取得
$today = wp_date('Y-m-d');

// テスト用(本番は削除)
$today = wp_date('2024-08-20');

のように、一時的にタイムスタンプを直書きしてます。
本番で削除するのを忘れないようにしないとですが……。

phpを触った初期の初期は、このやり方に気がつかなくて、本当にその日になるまで何日も待ってたりしました。
独学だと誰も教えてくれないから、びっくりするほど初歩的なことを知りません。
誰かの役にたつかもしれないのでメモしておきます。

\ SHARE & LIKE /

\ SHARE & LIKE /

歴ヲタ女子向けの幕末・歴史グッズのお店「小間物屋歴創」