『Advanced Custom Fields』のデイトピッカーから曜日を割り出す


今日は上着を厚手のにしました。
部屋にいても冷えますよねぇ。

さて、今日はAdvanced Custom Fieldのデイトピッカーを使った時の話。
大変便利なAdvanced Custom Fieldですが、その中のデイトピッカーを使っても曜日までは表示されません。

通常あんまり必要ないのかもしれませんが、今回必要となったのでそのやり方をメモしておきます。

目次

  1. Advanced Custom Fieldのデイトピッカーの設定
  2. 曜日の取得
  3. まとめ

Advanced Custom Fieldのデイトピッカーの設定

まずはAdvanced Custom Fieldの設定です。
『date_res』という名前で作成しました。
Advanced Custom Fieldの設定 - 『Advanced Custom Fields』のデイトピッカーから曜日を割り出す

一応『フォーマットを保存する』欄はハイフンついていません。
チュートリアルなんかには、ハイフン付きの日付が多いんですが、結果的にはハイフンがあってもなくても同じ結果が得られました。

その他はご自由に。

もちろんこのまま表示しても、曜日は出ません。
初期表示 - 『Advanced Custom Fields』のデイトピッカーから曜日を割り出す

曜日の取得

曜日は指定した日付から取得します。
今回はカスタムフィールドに入力した日付『date_res』ですね。

まずはこのフィールドの値(日付)を取り出します。

$get_date = get_field('date_res');

Advanced Custom Fieldを使っていればこう書けば取得できますね。(ループ内)

続いて、この日付を利用して曜日を判別するんですが、どうやらdate()を使うと何やら問題があるらしい(2038年問題)。

date() は古くからある方法で、ほとんどの環境で使うことが出来ますが、タイムスタンプ(UNIX時間)を使用する場合 2038年1月19日 までしか使用できないという欠点を抱えています。(2038年問題)
日付から曜日を割り出す | PHP Archive

なので、DateTimeクラスを使っての方法を拝借。

$datetime = date_create($get_date);
$week = array("日", "月", "火", "水", "木", "金", "土");
$w = (int)date_format($datetime, 'w');
$youbi = $week[$w];

これで投稿した日付から
投稿画面 - 『Advanced Custom Fields』のデイトピッカーから曜日を割り出す

何やらよくわからないままに曜日を取得することが出来ました。
最終結果 - 『Advanced Custom Fields』のデイトピッカーから曜日を割り出す

前はdate()を使って

$datetime = strtotime($date_res);
$week = array("日", "月", "火", "水", "木", "金", "土");
$w = date("w", $datetime);
$youbi = $week[$w];

こんな方法でやってました。
これでも同じように、曜日が取得できますよ。

まとめ

date()を使う方法は以前作ったテンプレートの中にあったんですが、今回違う方法を試してみましたところ、さっぱり何が何だか…。

2038年頃には違うシステムが組まれているだろうし、そもそもWordPressが、いやPHPが生き残ってるかどうかもよくわからないし、date()でもいいかなぁ。なんてことも思いました。

本当は日付を別の形で表示したりもしていたんですが、それはまた後日。
そいぎ~。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA