HOMEBLOG ⟩ 日付を比較して投稿を表示する

日付を比較して投稿を表示する

最近、日付を操作して何かすることが多いので、メモ。

2つの日付を比較

今日、未来、過去日なのかを判定する場合のコード

$today = date('Y-m-d');
$oneday = $field['oneday']; //カスタムフィールドの日付
if(strtotime($today) === strtotime($oneday)){
  var_dump('今日');
} else if(strtotime($today) < strtotime($oneday)){
  var_dump('未来');
} else {
  var_dump('過去');
}

イベント時、日付毎に一覧表示

ユーザーに日付を選択してもらい、指定期間分の投稿を返すし、日付ごとに投稿を表示する場合のサンプル。
一部抜粋して掲載しているので、下記コードは正常に動作しない可能性があります。

//日付を取得
$today = date('Y-n-d');
list($y, $m, $d) = preg_split('/-/', $today);
//投稿を取得 
global $post;
$my_posts = get_posts(array(
  'post_type' => 'post',
  'posts_per_page' => -1,
  'orderby' => 'date',
  'order' => 'DESC',
));

$date = $today;
     
//曜取得
$datetime = new DateTime($date);
$week = array("日", "月", "火", "水", "木", "金", "土");
$w = (int)$datetime->format('w');
$w = $week[$w];
$chk = array(); //判定用

//日付順に並べて表示
$html .= '<h2>' .$m.'月'.$d.'日('.$w.')</h2>'; //表示日時

//投稿に指定日が含まれる場合のみ取得する
foreach($my_posts as $post){
  setup_postdata($post);
  $fields = get_field('dates');
  //日付取得・判定
  $show = in_array( $date, array_column( $fields, 'oneday') ,true);
  if($show === true ){
   $count[] = $i++;
   $chk[] = 'true';
   echo '<a href="' . get_permalink() . '">';
   echo get_the_title();
   echo '<p>'.$post->post_content).'</p>';
   echo '</a>';
  } else {
    $chk[] = 'false';
  }
}