実現したいこと
HPのお知らせ新着マーク「new」を参考サイトでは「3日以内」になっているところを「1か月以内」に変更したいです。
ご教授いただければ幸いです。
言語
PHP
参考にしたコード
<?php // 「$days = 3」で「new」をつける期間を3日以内にする $days = 3; // 「date_i18n(‘U’);」はWordpressの日付取得関数 $today = date_i18n('U'); // 「get_the_time(‘U’);」はその記事の投稿日時を取得する関数 $entry_day = get_the_time('U'); // 「86400」は1日の秒数(60秒×60分×24時間=86400) $keika = date('U',($today - $entry_day)) / 86400; // 「if ( $days > $keika ):」の条件判定で、指定した日数より経過した日数が低い場合は「new」をつける処理をします。 if ( $days > $keika ): echo 'new'; endif; ?>
修正するコード
$keika = date('U',($today - $entry_day)) / 86400;
試したこと
「日」単位ではなく、「月」単位なので(60秒×60分×24時間×30日=2592000)で計算し、2592000で割りました。
$keika = date('U',($today - $entry_day)) / 2592000;
上記の記述で合ってますでしょうか。
ご教授お願い致します。
1か月を30日として扱うと考えた場合は他の部分を変えずに`$days = 30;`とするだけだと思うのですがそれだと問題がありますか?
> 分かる範囲の変更
何も分かってないし何も調べてないし何も確認していないように見えます
@dit様
ご教授ありがとうございます。
`$days = 30;`でif文の処理がうまくできました。
下記の「86400」が1日の秒数なので86400×30日の2592000でもうまく表示できました。
$keika = date('U',($today - $entry_day)) / 86400;
@hentaima様
ご指摘ありがとうございます。
質問をする際の記述の仕方、またもっとお調べしてから問題解決に取り組むように以後気を付けます。
未来の投稿予約情報の表示にしたかったから$keikaを$mirai=30に書き変えてみました、っていうぐらいいい加減な修正をしている事は理解した方が良いです
てっきり「2/20の1か月後は3/20と考えるから、(30日換算の場合)3/21にnewが出るのは困る」という趣旨の質問かと思いました。
1か月を30日で考えることと、月単位で指定をすることを優先するなら「試したこと」のコードでもご自身が納得してればいいのではないでしょうか。
$days = 30;にした方が圧倒的に楽だと思いますが…。
対応した方法を書いて自己解決で良いです。
あなたの回答
tips
プレビュー