今日は上着を厚手のにしました。
部屋にいても冷えますよねぇ。
さて、今日はAdvanced Custom Fieldのデイトピッカーを使った時の話。
大変便利なAdvanced Custom Fieldですが、その中のデイトピッカーを使っても曜日までは表示されません。
通常あんまり必要ないのかもしれませんが、今回必要となったのでそのやり方をメモしておきます。
目次
Advanced Custom Fieldのデイトピッカーの設定
まずはAdvanced Custom Fieldの設定です。
『date_res』という名前で作成しました。
一応『フォーマットを保存する』欄はハイフンついていません。
チュートリアルなんかには、ハイフン付きの日付が多いんですが、結果的にはハイフンがあってもなくても同じ結果が得られました。
その他はご自由に。
もちろんこのまま表示しても、曜日は出ません。
曜日の取得
曜日は指定した日付から取得します。
今回はカスタムフィールドに入力した日付『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];
これで投稿した日付から
何やらよくわからないままに曜日を取得することが出来ました。
前はdate()を使って
$datetime = strtotime($date_res); $week = array("日", "月", "火", "水", "木", "金", "土"); $w = date("w", $datetime); $youbi = $week[$w];
こんな方法でやってました。
これでも同じように、曜日が取得できますよ。
まとめ
date()を使う方法は以前作ったテンプレートの中にあったんですが、今回違う方法を試してみましたところ、さっぱり何が何だか…。
2038年頃には違うシステムが組まれているだろうし、そもそもWordPressが、いやPHPが生き残ってるかどうかもよくわからないし、date()でもいいかなぁ。なんてことも思いました。
本当は日付を別の形で表示したりもしていたんですが、それはまた後日。
そいぎ~。