目次
やりたいこと
最新の投稿記事には「NEW」のバッチを付けたい。
実装コード
日数計算用のPHPコード。
<?php
// 現在の日時と投稿日時を取得
$today = date('Y-m-d H:i:s');
$post_date = get_the_date('Y-m-d H:i:s');
$date_diff = (strtotime($today) - strtotime($post_date)) / 86400; // 日数差を計算
?>
変数$date_diff
(日数)を投稿記事コードのバッチ部分にif文の条件分岐で組み込む。
ここでは例えば3日以内とし$date_diff<=3
とする。
<?php if ($date_diff <= 3) : ?>
<p class="latest">NEW</p>
<?php endif; ?>
以上で3日以内であれば「NEW」のバッチが付与され、3日より古いものにはつかなくなる。
コードの詳細
現在の日時の取得
$today = date('Y-m-d H:i:s');
PHPの date
関数を使って現在の日時を「年-月-日 時:分:秒」の形式で取得。
投稿日時の取得
$post_date = get_the_date('Y-m-d H:i:s');
WordPressの get_the_date
関数を使って、現在処理中の投稿の公開日時を同じ形式で取得。
日時の差分計算
$date_diff = (strtotime($today) - strtotime($post_date)) / 86400;
2つの日時の差分計算。
strtotime
関数は与えられた日時文字列をUNIXタイムスタンプ(1970年1月1日0時0分0秒からの経過秒数)に変換。
$today
と $post_date
の差を秒単位で計算し、それを86400秒(1日の秒数)で割ることで、2つの日時の差を日単位で求める。
この計算結果により$date_diff
には現在の日時と投稿日時の差が日単位で格納される。
この値が3以下(=3日以内)であれば、その投稿は過去3日以内に公開されたと判断され、条件分岐内でバッチを表示するためのコードが実行される。
関数化
使いまわしたい場合はfunctions.phpで関数化。
引数に”何日以内”の日数を入力できるようにしておく。
/**
* 日付条件(引数に何日以下にしたいかの日数を入力)
*/
function is_new_post($days = 3)
{
$post_date = get_the_date('Y-m-d H:i:s');
$date_diff = (strtotime(current_time('Y-m-d H:i:s')) - strtotime($post_date)) / 86400;
return $date_diff <= $days;
}
3日以内であればこのようにしておけばOK。
<?php if (is_new_post(3)) : ?>
<p class="latest">NEW</p>
<?php endif; ?>
コメント