WordPressで時間に関する定数を使用する

WordPressで時間の定数を使用する方法
先生

WordPress にはあらかじめ用意されている定数があるが、今回は時間に関するものを紹介しよう。

生徒

はい、了解です!

WordPressの時間に関する定数

時間に関する定数には次のようなものが用意されています。

定数名時間値(秒数)
MINUTE_IN_SECONDS1分60
HOUR_IN_SECONDS1時間3600
DAY_IN_SECONDS1日86400
WEEK_IN_SECONDS1週間604800
MONTH_IN_SECONDS1ヶ月2592000
YEAR_IN_SECONDS1年31536000

この定数は、wp-includes/default-constants.php の中で次のように定義されています。

define( 'MINUTE_IN_SECONDS', 60 );
define( 'HOUR_IN_SECONDS', 60 * MINUTE_IN_SECONDS );
define( 'DAY_IN_SECONDS', 24 * HOUR_IN_SECONDS );
define( 'WEEK_IN_SECONDS', 7 * DAY_IN_SECONDS );
define( 'MONTH_IN_SECONDS', 30 * DAY_IN_SECONDS );
define( 'YEAR_IN_SECONDS', 365 * DAY_IN_SECONDS );

この定数を使って、set_transient 関数で値を12時間保存しておく例です。

$now = date_i18n( 'Y-m-d H:i:s' );
set_transient( 'last_access_datetime', $now, 12 * HOUR_IN_SECONDS );

まとめ

先生

カスタマイズする時に、コードに数字を直接記述すると何を書いているのか分かりづらくなるので、こういう定数をできるだけ活用するとよい。

生徒

うん、86400 ってあるとぱっと見何のことか分からないけど、DAY_IN_SECONDS と書いてあれば意味が通じやすくなるね。

先生

ただし、1ヶ月や1年を指定したいときは注意が必要。月には31日ある月もあるし、1年もうるう年だったら366日に増える。これを使っても問題ないケースなのかどうか、ちゃんと判断することが大切じゃな。

生徒

了解しました!

参考URL