カスタム投稿タイプで入力した日付を自動で更新したいというオーダー。
やりたいこと
必ず定期的に情報更新をしないといけない投稿だが更新する内容がない(日付だけの更新)場合に表示される日付を更新させたい。
こまったこと
投稿日付ではなく、カスタムフィールドに入力した日付を更新する方法が思いつかなかった。
表示日付を更新させるコード
<?php
$Update = date_create(get_field('date'));
$today = new DateTime();
$interval = $today->diff($Update);
$sum = floor($interval->days / 14);
$i = 0;
while ($i < $sum) {
$Update->modify('+2 week') ;
$i++;
}
echo $Update->format('Y/m/d');
?>
コードのポイント
php2行目
カスタムフィールドの値 get_field(‘date’) を取得する
$Update = date_create(get_field('date'));
php3行目
今日の日付を取得する
$today = new DateTime();
php4行目
日付の差を計算する
$interval = $today->diff($Update);
php5行目
日付差を14日で割り小数点以下は切り捨てる(投稿した日付から何回分自動更新するか)
$sum = floor($interval->days / 14);
php7~10行目
更新回数分+2weekを繰り返す
$Update->modify('+2 week') ;
php12行目
新しい日付を出力する
echo $Update->format('Y/m/d');
投稿数が多ければ多いほど、すべての日付を定期的に更新するのは大変な作業になるので、表示の段階で日付を更新するというのも必要なこともあるかなと思います。