かもメモ

自分の落ちた落とし穴に何度も落ちる人のメモ帳

Wordpress 新しい投稿にNEWって表示したい。

Wordpressの投稿一覧ページなどで最近の投稿にはNEWと表示させてみました。

実装する方法を考えました。

1. 今日の日付と投稿日の日付を比較する
2. 差がn日以内なら NEW を表示

1. 今日の日付と投稿日の日付を比較する

を参考にfunction.phpにコードを記述します。

<?php
// function.php
$TODAY = strtotime(date('Y-m-d'));
function check_new_post($date) {
  global $TODAY;
  $date = strtotime($date);
  $dayDiff = abs($TODAY - $date) / 86400; //(60 * 60 * 24)
  return $dayDiff;
}

各投稿のループ内から呼び出す事になるので、
今日の日付は何回も計算しないようにglobalに持たせてみました。
$dayDiffでで投稿日から何日経っているかが解ります。
(function.php全体をclass化してしまいたい。。。)

2. 差がn日以内なら NEW を表示

一旦 2週間(14日)以内ならNEWを表示させたいと思います。
function.phpにif文足すだけですが...

<?php
// function.php
$TODAY = strtotime(date('Y-m-d'));
function check_new_post($date) {
  global $TODAY;
  $date = strtotime($date);
  $dayDiff = abs($TODAY - $date) / 86400; //(60 * 60 * 24)
  return ($dayDiff < 14);
}

呼出し側 content.php
投稿日を関数に渡してtrueなら'NEW'を表示させます。

<?php
  // content.php
  if(check_new_post( get_post_time('Y-m-d') )) {
    echo 'NEW';
  }
?>

PHPとかwordpressとか最近触らなすぎてて凄く忘れている!