ブログ

カスタム投稿でフィールドの日付を自動更新する

カスタム投稿タイプで入力した日付を自動で更新したいというオーダー。

やりたいこと

必ず定期的に情報更新をしないといけない投稿だが更新する内容がない(日付だけの更新)場合に表示される日付を更新させたい。

こまったこと

投稿日付ではなく、カスタムフィールドに入力した日付を更新する方法が思いつかなかった。

表示日付を更新させるコード

<?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');	

投稿数が多ければ多いほど、すべての日付を定期的に更新するのは大変な作業になるので、表示の段階で日付を更新するというのも必要なこともあるかなと思います。