MENU

【WordPress】最新の投稿にバッチを付与する方法(日数条件)

目次

やりたいこと

最新の投稿記事には「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; ?>
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

CAPTCHA


目次